Python:如何在按下一个键后在没有双重激活的情况下在 while 循环中切换布尔值?
Python: How to toggle a boolean in a while loop after pressing a key without it double activating?
我有一个无限的 while 循环 运行ning 直到我按下一个键退出它。目前,我有一个 if 语句,如果我按下一个键,它会切换一个布尔值。
if keyboard.is_pressed('s'):
armed = not armed
当我 运行 循环并按下按键时,有时它会激活两次,因为按键在按下期间按下的时间足够长,以便在 while 循环的下一次迭代中被激活。
有没有不涉及在 while 循环中放置延迟的解决方案?这是一个基于 cv2 的脚本,因此任何延迟都会导致所捕获视频的 fps 下降。
您可以记录检测到压力的时间。从那里开始的时间间隔内的任何内容都将被忽略。
import time
last_press = time.time()
key_delay_seconds = 1.0
armed = False
while True:
if keyboard.is_pressed('s'):
if cur_time := time.time() > last_press + key_delay_seconds:
armed = not armed
last_press = cur_time
print(armed)
我有一个无限的 while 循环 运行ning 直到我按下一个键退出它。目前,我有一个 if 语句,如果我按下一个键,它会切换一个布尔值。
if keyboard.is_pressed('s'):
armed = not armed
当我 运行 循环并按下按键时,有时它会激活两次,因为按键在按下期间按下的时间足够长,以便在 while 循环的下一次迭代中被激活。
有没有不涉及在 while 循环中放置延迟的解决方案?这是一个基于 cv2 的脚本,因此任何延迟都会导致所捕获视频的 fps 下降。
您可以记录检测到压力的时间。从那里开始的时间间隔内的任何内容都将被忽略。
import time
last_press = time.time()
key_delay_seconds = 1.0
armed = False
while True:
if keyboard.is_pressed('s'):
if cur_time := time.time() > last_press + key_delay_seconds:
armed = not armed
last_press = cur_time
print(armed)