所以问题是如何让输入函数或stdin.readline函数等待输入,同时有一个更新提示,即提示包含格式为HH:MM:SS的时间,并且每秒刷新一次,如:
while 1:
sys.stdout.write('\r' + time.strftime(TIME_FORMAT) + ' :>')
time.sleep(1.0)
但是只要你在那里添加输入,程序当然会等到你写一些输入。我使用的python版本是3.5。
我知道我应该使用curses,但我正在计划编写一个跨平台程序,我找到的唯一模块是clint,但它在更新提示的文档中没有任何内容。
我发现了一些非常接近但有不同问题的东西:
def input_thread(L):
x = input()
L.append(x)
L = []
thread = threading.Thread(target=input_thread, args=(L,))
thread.start()
while 1:
sys.stdout.write('\r' + time.strftime(TIME_FORMAT) + '>:')
time.sleep(1.0)
sys.stdout.flush()
现在问题仍然是当你输入输入但不按ENTER时,下一次迭代的输入仍然存在,但是当你写东西时,先前的输入被当前输入替换。当然,先前的输入仍然存在于参数L中,因此没有输入丢失。我希望我没有把这描述为混乱。
如果没有简单的方法可以用诅咒来完成,我可以使用类似的交叉打开工具。谢谢你的时间和答案!
答案 0 :(得分:0)
所以,几个月前我想出了我想要的东西,但没有回答我自己的问题。
要获得更新时间的提示,您需要一个单独的线程:
第二个线程处理每个按键,你可以编程它如何处理按下的按键。
按键时,更新提示的线程会添加按下的键。此外,您还必须为Return,Backspace等配置一些快捷方式,以便按预期工作
我已经让它工作了,不幸的是......我不喜欢它。如果有人想看到我愿意提供的代码。