1

我可以在程序运行时更改 raw_input 光标的位置吗?

例如,我的代码是:

print raw_input ("Please enter your last name..")
print ("                                        Type now ..")
print raw_input ("please enter your first name..")

我希望“立即输入”部分位于屏幕下方某处,但闪烁 | 留在“请输入您的姓氏”部分之后。

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

4

2 回答 2

2

没有跨平台的方式来执行这种“控制台 GUI”功能。

如果您不关心 Windows,大多数其他平台都有该curses模块。对于你想要的东西来说它有点重,但它可以做你想做的一切,甚至更多。

或者,如果您只关心通用终端(ANSI 控制序列、80 字符宽度等),您可以通过发送显式控制序列或使用代表您执行此操作的包装库来实现。

或者,如果您关心 Windows,conioPyPI 上有各种不同的包装器。


正如您可能已经猜到的那样,旋转光标的代码取决于您使用的库。尽管您实际上并不需要完整的光标移动功能;您只需要某种方式以原始模式从键盘读取。(您可以使用库在 Windows 上执行此操作,使用msvcrt库在 Unix 上执行此操作tty和/或仅使用selecton stdin。)然后,您只需循环,等待超时为 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)
于 2013-08-08T23:01:57.000 回答
0

while True:
for i in ["/","-","|","\","|"]:
print "%s\r" % i,

于 2013-08-17T18:02:55.820 回答