Python等待x秒钟等待键,如果未按下则继续执行

|| 我是python的n00b用户,我正在寻找执行以下操作的代码段/示例: 显示类似“按任意键进行配置或等待X秒钟继续”的消息 例如,等待5秒钟,然后继续执行,或者如果按下某个键,则输入configure()子例程。 谢谢您的帮助! 伊万·詹森斯(Yvan Janssens)     
已邀请:
        如果您使用的是Unix / Linux,那么select模块将为您提供帮助。
import sys
from select import select

print \"Press any key to configure or wait 5 seconds...\"
timeout = 5
rlist, wlist, xlist = select([sys.stdin], [], [], timeout)

if rlist:
    print \"Config selected...\"
else:
    print \"Timed out...\"
如果您使用的是Windows,请查看msvcrt模块。 (请注意,这在IDLE中无效,但在cmd提示符下有效)
import sys, time, msvcrt

timeout = 5
startTime = time.time()
inp = None

print \"Press any key to configure or wait 5 seconds... \"
while True:
    if msvcrt.kbhit():
        inp = msvcrt.getch()
        break
    elif time.time() - startTime > timeout:
        break

if inp:
    print \"Config selected...\"
else:
    print \"Timed out...\"
编辑更改了代码示例,因此您可以判断是超时还是按键...     
        Python没有任何标准的方法来捕获此错误,它仅通过input()和raw_input()获得键盘输入。 如果您确实希望这样做,则可以使用Tkinter或pygame将击键作为“事件”来捕获。还有一些特定于平台的解决方案,例如pyHook。但是,如果它对您的程序不是绝对重要的话,我建议您使它以另一种方式工作。     
        如果将time.sleep,threading.Thread和sys.stdin.read组合在一起,则可以轻松地等待指定的输入时间,然后继续。
t = threading.Thread(target=sys.stdin.read(1) args=(1,))
t.start()
time.sleep(5)
t.join()
    

要回复问题请先登录注册