程序运行时,我可以更改raw_input光标的位置吗?-蟒蛇



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

例如,我的代码是:

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

我希望"立即键入"部分位于屏幕下部的某个位置,但闪烁的|保留在"请输入您的姓氏"部分之后。

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

没有跨平台的方式来实现这种"控制台GUI"功能。

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

或者,如果您只关心常见的终端(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('08')
    msvcrt.putwch(next(cursor))
    time.sleep(0.1)

而True为:
对于["/"、"-"、"|"、"\"、"|]中的i:
打印"%s\r"%i,

最新更新