制作一个“文件”;“任何键”;可中断Python定时器
我正在尝试制作一个简单的计时器,它会一直计数,直到被键盘输入中断 现在我正在使用CTRL+C来停止计时器,但我想做一些更简单的事情,比如按空格键、回车键或“任意键”。我听说这可以通过线程模块来完成,但经过几次尝试后,我显然不知道我在用它做什么 这是我当前的代码:制作一个“文件”;“任何键”;可中断Python定时器,python,multithreading,timer,interrupt,Python,Multithreading,Timer,Interrupt,我正在尝试制作一个简单的计时器,它会一直计数,直到被键盘输入中断 现在我正在使用CTRL+C来停止计时器,但我想做一些更简单的事情,比如按空格键、回车键或“任意键”。我听说这可以通过线程模块来完成,但经过几次尝试后,我显然不知道我在用它做什么 这是我当前的代码: def countup(): try: a=0 for i in range(1000000) : print i,'\r', time.sleep
def countup():
try:
a=0
for i in range(1000000) :
print i,'\r',
time.sleep(1)
except KeyboardInterrupt:
Z = raw_input("restart timer?" )
if Z == "Y" or Z == "y" :
countup()
您的代码目前存在两个问题:
import sys
import select
import time
def countup():
i = 0
while True:
print i
i += 1
time.sleep(1)
while sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
line = sys.stdin.readline()
if line:
r = raw_input("Restart?")
if r.lower() == "y":
countdown()
else:
break
countup()
您的代码目前存在两个问题:
import sys
import select
import time
def countup():
i = 0
while True:
print i
i += 1
time.sleep(1)
while sys.stdin in select.select([sys.stdin], [], [], 0)[0]:
line = sys.stdin.readline()
if line:
r = raw_input("Restart?")
if r.lower() == "y":
countdown()
else:
break
countup()
使用并可以写入(按任意键停止):
让我们澄清一下:
使用input\u thread()
作为启动函数创建新线程。在主线程中提升键盘中断时
返回当前端子属性~termios.ICANON
取消设置模式,并~termios.ECHO
阻止输入打印,然后执行更改
或者,在Windows上,可以使用中的getch()
from代替read\u key()
参考
使用并可以写入(按任意键停止):
让我们澄清一下:
使用input\u thread()
作为启动函数创建新线程。在主线程中提升键盘中断时
返回当前端子属性~termios.ICANON
取消设置模式,并~termios.ECHO
阻止输入打印,然后执行更改
或者,在Windows上,可以使用中的getch()
from代替read\u key()
参考
非常好。对于“按任意键”,我加载了MSVCRT模块,并将原始输入()函数替换为char=MSVCRT.getch()。然后对char使用if函数,当按下一个键时,该函数总是false。谢谢杰出的对于“按任意键”,我加载了MSVCRT模块,并将原始输入()函数替换为char=MSVCRT.getch()。然后对char使用if函数,当按下一个键时,该函数总是false。谢谢
def input_thread():
msvcrt.getch()
thread.interrupt_main()