KeyboardInterrupt未捕获异常 无法通过快捷键终止pyautogui运行的问题
问题根因
你遇到的KeyboardInterrupt无法触发的核心原因有两个:
- VSCode运行程序时如果输出窗口未处于焦点状态,Ctrl+C的终止信号无法传递到Python进程
pyautogui.locateCenterOnScreen执行图像识别时会阻塞主线程,导致信号接收延迟、甚至无法响应中断信号
实现自定义按键退出(类似OpenCV waitKey 逻辑)
你需要借助第三方全局按键监听库实现效果,这里用轻量的keyboard库为例:
- 首先安装依赖:
pip install keyboard
- 修改后的代码逻辑如下:
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
相关产品推荐
相关产品推荐

