我正在使用Python编写一个简单的Windows程序,该程序利用了time
模块。具体来说,我使用time.sleep(x)
暂停程序一小段时间,通常为0.5-2秒。这基本上就是我正在做的事情:
import time
time.sleep(2)
while True:
x = input(prompt)
if x == 'spam':
break
问题是,如果用户在time.sleep
暂停时按Enter键,那么这些输入将计入while
循环中的输入。这导致prompt
多次打印,这令人沮丧。
我想知道在time.sleep
正在进行时是否有临时禁用键盘输入的方法,然后再启用它。像这样:
import time
disable_keyboard_input()
time.sleep(2)
enable_keyboard_input()
while True:
etc.
有没有人知道使用Python做到这一点的方法?提前谢谢!
答案 0 :(得分:1)
我发现这个工作非常出色:
import time
class keyboardDisable():
def start(self):
self.on = True
def stop(self):
self.on = False
def __call__(self):
while self.on:
msvcrt.getwch()
def __init__(self):
self.on = False
import msvcrt
disable = keyboardDisable()
disable.start()
time.sleep(10)
disable.stop()
它阻止用户输入任何内容;当你按键盘上的键时,没有任何反应。
答案 1 :(得分:0)
试试这个。
stdout = sys.stdout
sys.stdout = sys.stderr
time.sleep(2)
sys.stdout = stdout
while True:
pass
没有尝试过这个。但是我希望在睡眠结束前输入的所有内容都会发送到stderr ...不确定,但是Python可以访问linux的std / null吗?