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

KeyboardInterrupt未捕获异常 无法通过快捷键终止pyautogui运行的问题

问题根因

你遇到的KeyboardInterrupt无法触发的核心原因有两个:

  • VSCode运行程序时如果输出窗口未处于焦点状态,Ctrl+C的终止信号无法传递到Python进程
  • pyautogui.locateCenterOnScreen执行图像识别时会阻塞主线程,导致信号接收延迟、甚至无法响应中断信号

实现自定义按键退出(类似OpenCV waitKey 逻辑)

你需要借助第三方全局按键监听库实现效果,这里用轻量的keyboard库为例:

  1. 首先安装依赖:
pip install keyboard
  1. 修改后的代码逻辑如下:
import pyautogui as py
import keyboard
import time # 可选,用于降低CPU占用提升响应效率

try:
    while True:   
        # 每次循环开头先判断是否按下了q键
        if keyboard.is_pressed('q'):
            print("检测到q键按下,程序终止")
            break
        for image in image_list:
            # 内层循环也加一次判断,避免遍历图片列表时无法响应按键
            if keyboard.is_pressed('q'):
                break
            name = image
            location = py.locateCenterOnScreen(image, confidence=0.9)
            print(name + " Found at: " + str(location))
        # 可选:加少量延时降低CPU占用,提升按键监听响应效率
        time.sleep(0.1)

except KeyboardInterrupt:
    print("Interrupted")

注意事项

如果运行时报权限相关错误,右键以管理员身份启动VSCode再运行即可,全局按键监听需要系统权限支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:42:03