如何解决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()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。