如何用keyboard模块检测按键?自动跳跃程序停止异常求助
解决自动跳跃程序按Q停止时的阻塞问题
你的问题出在kbd.read_key()这个函数上——它是阻塞式的,程序执行到这一行就会暂停,必须等你按下任意按键才会继续往下走,所以看起来像是程序直接停止了,其实是在等待输入。
给你两种可行的解决方案:
方案1:用非阻塞按键检测
替换read_key()为is_pressed(),它只会瞬间检查按键状态,不会阻塞程序运行:
import keyboard as kbd from time import sleep while True: # 执行跳跃动作 kbd.press("space") sleep(0.1) kbd.release("space") # 非阻塞检测Q键是否按下 if kbd.is_pressed("q"): break # 加短延迟降低CPU占用 sleep(0.01)
方案2:用键盘钩子(更高效)
注册一个按键回调函数,当Q键被按下时设置停止标志,主循环根据标志退出,这种方式CPU占用更低:
import keyboard as kbd from time import sleep stop_program = False def handle_q_press(event): global stop_program if event.name == "q": stop_program = True # 注册Q键按下的回调 kbd.on_press(handle_q_press) while not stop_program: kbd.press("space") sleep(0.1) kbd.release("space") sleep(0.01) # 清理钩子避免残留 kbd.unhook_all()
两种方案都能让程序持续执行跳跃,直到你按下Q键才停止,不会出现中途阻塞的情况。
内容的提问来源于stack exchange,提问作者xol1s0s
相关产品推荐
相关产品推荐

