检查按钮是否按下问题键盘模块

问题描述 投票:0回答:1

我制作了一个自动跳转程序,我希望它在我按“q”时停止。由于某种原因,程序在到达“if”行时就会停止。

import keyboard as kbd
from time import sleep
while True:
    kbd.press("space")
    sleep(0.1)
    kbd.release("space")            
    if kbd.read_key() == "q":
        break

我尝试使用不同的键盘库制作这个程序,但没有帮助

python keyboard
1个回答
0
投票

来自文档

keyboard.read_key(suppress=False)

阻塞直到发生键盘事件,然后返回该事件的名称,或者如果缺少,则返回其扫描代码。

这就是为什么你的代码在

read_key
函数调用处停止 - 该函数正在阻塞。

您想要的是异步获取有关按下按键的通知。您可以使用 add_hotkey 来实现此目的。设置一个允许您跳出循环的回调。如果你想触发一次回调记得删除热键。

我怎么看(我没有测试这段代码):

was_q_pressed = False
q_hotkey = None

def on_q_press():
  was_q_pressed = True
  kbd.remove_hotkey(q_hotkey)


q_hotkey = kbd.add_hotkey("q", on_q_press)

while True:
    kbd.press("space")
    sleep(0.1)
    kbd.release("space")            
    if was_q_pressed:
        break
© www.soinside.com 2019 - 2024. All rights reserved.