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

为何Python脚本无法停止,持续重复输入a和回车键?

问题分析与解决方案

核心问题

你的脚本无法停止的根本原因是内层while oliver循环一旦启动就会彻底卡死程序:

  • 内层循环里只有pyautogui.press操作,完全没有留出时间去检查键盘按键
  • 外层的santtu循环根本没机会继续运行,导致按"e"键触发oliver=False的逻辑永远不会被执行

你尝试的修改里,global oliver是多余的(当前代码无函数嵌套,变量本身就在全局作用域),而且quit()/exit()这些语句根本没机会被触发——内层循环已经把程序的执行权完全占住了。

修正方案

方案1:单循环+状态判断

把嵌套循环改成单循环,确保每次循环都能检查按键状态:

import keyboard
import pyautogui

running = False

while True:
    # 检查启动/停止按键
    if keyboard.is_pressed("s"):
        running = True
    elif keyboard.is_pressed("e"):
        running = False
    
    # 运行状态下执行输入
    if running:
        pyautogui.press("a")
        pyautogui.press("Enter")
        pyautogui.sleep(1)  # 控制输入间隔,同时给程序留时间响应按键
    else:
        pyautogui.sleep(0.1)  # 停止时降低CPU占用

方案2:热键绑定(更可靠)

用keyboard.add_hotkey直接绑定启动/停止逻辑,避免按键检测遗漏:

import keyboard
import pyautogui
import time

running = False

def toggle_running():
    global running
    running = not running

# 绑定s键切换运行状态,e键直接终止脚本
keyboard.add_hotkey("s", toggle_running)
keyboard.add_hotkey("e", lambda: exit())

while True:
    if running:
        pyautogui.press("a")
        pyautogui.press("Enter")
        time.sleep(1)
    else:
        time.sleep(0.1)

关键修正点

  • 移除嵌套循环,让程序每次循环都能处理键盘事件
  • 加入休眠时间,既满足输入间隔要求,也避免程序占用过高CPU
  • 热键绑定的方式比is_pressed更稳定,能确保按键操作被及时响应

内容的提问来源于stack exchange,提问作者simpanssi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:32:54