如何判断按键按下/抬起状态?实现仅在按键抬起时执行代码
问题:实现Ctrl+F按键抬起时执行代码,避免重复触发
当前代码会在Ctrl+F按下时重复触发执行,希望改成仅在按键抬起时才执行一次代码,原代码如下:
import keyboard if keyboard.is_pressed('f') and keyboard.is_pressed('ctrl'): print("clicked")
解决方案
可以使用keyboard库的add_hotkey方法,指定触发时机为按键释放(trigger_on_release=True),这样只有当Ctrl+F组合键抬起时才会执行目标函数,不会重复触发。修改后的代码如下:
import keyboard def on_ctrl_f_release(): print("clicked") # 注册Ctrl+F热键,设置为释放时触发 keyboard.add_hotkey('ctrl+f', on_ctrl_f_release, trigger_on_release=True) # 保持程序运行,等待按键事件 keyboard.wait()
说明
- 原代码的问题在于
is_pressed只是实时检测当前按键状态,要是把这段代码放进循环里,按住按键期间会不断触发;就算不在循环里,也只能检测一次瞬间状态,完全不符合需求。 add_hotkey配合trigger_on_release=True会专门监听组合键的释放动作,每次松开按键只会执行一次目标函数,完美解决重复触发的问题。- 最后调用
keyboard.wait()是为了让程序保持运行状态,否则程序启动后会直接退出,无法监听任何按键事件。
内容的提问来源于stack exchange,提问作者Sunken
相关产品推荐
相关产品推荐

