2024-05-17 13:22:06 发布
网友
我是python的一个n00b,我正在寻找一个执行以下操作的代码片段/示例:
谢谢你的帮助!
伊凡·扬森
如果您在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。但如果这对你的计划不是绝对重要的话,我建议你换一种方式。
如果您在Unix/Linux上,那么select模块将帮助您。
如果您在Windows上,那么请查看msvcrt模块。(注意,这在空闲时不起作用,但在命令提示符下会起作用)
编辑更改了代码示例,以便您可以判断是否存在超时或按键。。。
如果将time.sleep、threading.Thread和sys.stdin.read组合在一起,您可以很容易地等待指定的输入时间,然后继续。
Python没有任何标准的方法来捕获它,它只能通过input()和raw_input()获得键盘输入。
如果你真的想这样做,你可以使用Tkinter或pygame来捕捉作为“事件”的击键。还有一些特定于平台的解决方案,如pyHook。但如果这对你的计划不是绝对重要的话,我建议你换一种方式。
相关问题 更多 >
编程相关推荐