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)