You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 17:46:01