当程序运行时,我可以更改原始输入光标的位置吗?-python

当程序运行时,我可以更改原始输入光标的位置吗?-python,python,cursor,raw-input,Python,Cursor,Raw Input,我可以在程序运行时更改原始输入光标的位置吗 例如,我的代码是: print raw_input ("Please enter your last name..") print (" Type now ..") print raw_input ("please enter your first name..") 我希望“现在键入”部分位于屏幕的下半部分,但“请输入您的姓氏”部分后仍保持闪烁状态 哦,当我在这里的时候,有

我可以在程序运行时更改原始输入光标的位置吗

例如,我的代码是:

print raw_input ("Please enter your last name..")
print ("                                        Type now ..")
print raw_input ("please enter your first name..")
我希望“现在键入”部分位于屏幕的下半部分,但“请输入您的姓氏”部分后仍保持闪烁状态


哦,当我在这里的时候,有人能把我的“旋转”代码粘贴出来吗或者用更奇特的东西给我留下深刻印象?

没有跨平台的方法来实现这种“控制台GUI”功能

如果你不关心Windows,大多数其他平台都有
诅咒
模块。对于你想要的东西来说,它有点重,但它可以做你想要的任何事情,甚至更多

或者,如果您只关心公共终端(ANSI控制序列、80字符宽度等),那么可以通过发送显式控制序列或使用代表您这样做的包装器库来完成

或者,如果您只关心Windows,那么PyPI上的
conio
周围有各种不同的包装


正如您可能已经猜到的,旋转光标的代码取决于您使用的库。虽然你实际上并不需要完整的光标移动功能;你只需要在原始模式下从键盘读取数据。(您可以在Windows上使用
msvcrt
库执行此操作,在Unix上使用
tty
库执行此操作,和/或仅使用
stdin
上的
select
)然后,您只需循环,等待一个超时的键,例如0.1秒,如果超时,则更新光标

大概是这样的:

cursor = itertools.repeat(r'|/-\')
while True:
    if msvcrt.khbit():
        return msvcrt.getwch()
    msvcrt.putwch('\008')
    msvcrt.putwch(next(cursor))
    time.sleep(0.1)
如果为True:
对于[“/”、“-”、“|”、“\”、“|”]中的i:

打印“%s\r”%i,

我认为这在某种程度上有助于我将来的工作,但我是麻省理工学院课程的初学者。作业是以一种严格的、命令式的方式写的,所以我想玩弄他们给我的问题,让它对我来说更有趣。我用notepad++编写所有代码,然后加载powershell并键入python MITex1.py以查看结果。我不知道如何加载模块,也不知道它们实际上是什么。我希望很快就能做到!我将该代码复制到python中,但它在cursor=itertools.repeat(“|/-\”)的最后一个“)”下给出了一个语法错误。首先,要“加载模块”,只需使用
import
语句。例如,
import-itertools
,然后
import-msvcrt
,使上述代码正常工作(如果您在Windows上,也就是说)。第二,代码的原始版本有一个打字错误;带有文字反斜杠的字符串文字必须是原始字符串:
r'|/-\'
,而不仅仅是
'|/-\'
。我已经解决了这个问题。另外,如果您不在Windows上,我的半成品模块将为您提供与
msvcrt
相同的方法……但是,向不知道如何将第三方模块导入stdlib的用户解释如何安装第三方模块可能太超前了。