如何解决Pyautogui未找到屏幕目标图片时仍执行点击的问题
问题根因
pyautogui.locateOnScreen() 方法在屏幕上匹配不到目标图片时,会直接返回None。原有代码没有做返回值校验,直接把结果传给click();而click()接收到None参数时,默认会点击当前鼠标停留的位置,就会出现找不到目标图依然触发点击的现象。
修复方法
只需要在调用点击前加一层非空判断,仅当成功匹配到图片坐标时才执行点击即可,顺便修正原代码里的不合理写法(比如把导入语句放到循环外、加检测休眠避免CPU占满):
import pyautogui as a import time click_target = 'photoes/fish.png' # 检测间隔,单位秒,避免循环跑满CPU check_gap = 0.3 while True: location = a.locateOnScreen(click_target) # 仅当找到有效坐标时才触发点击 if location: a.click(location) time.sleep(check_gap)
可选优化
如果经常出现匹配不准的情况,可以安装opencv-python依赖后,给locateOnScreen加上confidence参数调整匹配置信度(取值范围01,数值越高匹配要求越严格,常用值0.70.9),写法如下:location = a.locateOnScreen(click_target, confidence=0.8)
内容的提问来源于stack exchange,提问作者Don't Worry
相关产品推荐
相关产品推荐

