问题描述
||
我是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()