我正在处理需要执行以下方案的问题:
我将提示用户输入屏幕(控制台窗口)。当提示显示为基本的Y / N问题时,我需要a)接受对提示的用户输入响应并继续或b)等待预设时间然后将提示重置为先前的值,以先到者为准。想想如果用户离开并且您已经有了想法,需要重置的信息亭。
似乎我的逻辑(下面的伪Python)在用户输入等待用户回复之后添加时间延迟,而不是在一段时间后重新放弃用户并重置。
UserInput = input("prompt. y/n?")
if UserInput == "y":
Do something to move on
elif UserInput != "y":
time.sleep(dwell)
Do something to reset
如果用户正在积极关注,那么我现在所拥有的一切都可以正常工作。但是,我觉得一切都在关注" Enter"按键被提交输入,我不知道如何强制覆盖输入或只是让看门狗超时并继续前进。
此外,似乎在睡眠时间内没有接受用户输入。这是真的吗?
答案 0 :(得分:0)
如果你在unix上运行,只需使用" signal.alarm"函数,否则你可以使用像windows这样的代码:
import msvcrt
import time
def raw_input_with_timeout(prompt, timeout=30.0):
print prompt,
finishat = time.time() + timeout
result = []
while True:
if msvcrt.kbhit():
result.append(msvcrt.getche())
if result[-1] == '\r': # or \n, whatever Win returns;-)
return ''.join(result)
time.sleep(0.1) # just to yield to other processes/threads
else:
if time.time() > finishat:
return None
而不是返回"无"你可以提出错误或任何你想要的......