我制作了一个自动跳转程序,我希望它在我按“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
我尝试使用不同的键盘库制作这个程序,但没有帮助
来自文档
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