Python等待一个键x秒,如果没有按下,则继续执行

2024-05-17 13:22:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的一个n00b,我正在寻找一个执行以下操作的代码片段/示例:

  • 显示类似“按任意键配置或等待X秒继续”的消息
  • 例如,等待5秒,然后继续执行,或者在按下键时输入configure()子例程。

谢谢你的帮助!

伊凡·扬森


Tags: 代码消息示例configure例程继续执行任意键n00b
3条回答

如果您在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模块。(注意,这在空闲时不起作用,但在命令提示符下会起作用)

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..."

编辑更改了代码示例,以便您可以判断是否存在超时或按键。。。

如果将time.sleep、threading.Thread和sys.stdin.read组合在一起,您可以很容易地等待指定的输入时间,然后继续。

t = threading.Thread(target=sys.stdin.read(1) args=(1,))
t.start()
time.sleep(5)
t.join()

Python没有任何标准的方法来捕获它,它只能通过input()和raw_input()获得键盘输入。

如果你真的想这样做,你可以使用Tkinter或pygame来捕捉作为“事件”的击键。还有一些特定于平台的解决方案,如pyHook。但如果这对你的计划不是绝对重要的话,我建议你换一种方式。

相关问题 更多 >