在触发时重启的定时器Python -如何重启?



有点新手,所以请耐心等待:

我正在尝试制作一个粗糙的60秒计时器,它被重置并在触发器的上升边缘再次开始(即当门变高时)。我的问题是,它不会重置和重启,除非计时器已经完成(即达到零)。我如何中断while循环并让它重新开始?

下面是我的代码:
import keyboard
import time
t=60
last = False
current = False
while True:
current = keyboard.is_pressed('space') # triggered when space bar is pressed
if last == 0 and current == 1: 
while t>=0:
print(t)
t-=1
time.sleep(1)
last = current # reset

试试这个:

import time
import keyboard
x=60
while True:
try:
if keyboard.is_pressed('space'):
x=60
print(f"Timer reset to {x}")
elif keyboard.is_pressed('space'):
break
else:
print(f"{x} seconds left")
time.sleep(1)
x-=1
except Exception:
pass

这是我的建议。问题是,那一次。睡眠是一种阻碍,所以当它进入睡眠状态时,你无法通过按下逃生键来打破它。你将不得不使用逃避按钮,但它是有效的。

import keyboard
import time
t=60
last = False
current = False
while True:
current = keyboard.is_pressed('space') # triggered when space bar is pressed
if last == 0 and current == 1: 
while t>=0:
if keyboard.is_pressed('escape'):
t = 60
last = False
current = False
print("Timer stopped.")
break
print(t)
t-=1
time.sleep(1)
last = current # reset

示例输出/测试:

60
59
58
57
56
60
59
58
57
56
60
59
60
59
58

建议不使用break的解决方案:

import keyboard
import time
last = 0
current = 0
while True:
t=60
current = keyboard.is_pressed('space') # triggered when space bar is pressed
if last == 0 and current == 1:
current = 0
while t>=0 and current == 0:
print(t)
t-=1
time.sleep(1)
current = keyboard.is_pressed('space')
last = current # reset

不确定你想如何处理长时间的按压。如果空格键停留超过一秒,计时器将在(技术上)一次按键中重置几次。

最新更新