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

如何结合if-else判断pyautogui.locateCenterOnScreen是否成功定位图片

PyAutoGUI 图片定位成功判断及异常规避方案

报错原因

pyautogui.locateCenterOnScreen方法在指定区域无法匹配到目标图片时,会返回None,直接对None执行a, b = xxx的解包操作,就会触发TypeError: cannot unpack non-iterable NoneType object错误。

解决代码

你可以先存储定位结果,判断非空后再解包使用,和你提供的if-else逻辑结合后的代码如下:

import pyautogui

# 先接收定位结果,不直接解包
position = pyautogui.locateCenterOnScreen('~/home/file_01.png', region=(1065,250,385,700), confidence=0.9)
if position is not None:
    # 定位成功再解包坐标
    a, b = position
    print('Congratulations, you won!')
    # 此处添加定位成功后的业务逻辑
else:
    print("I'm sorry but you lost.")
    # 此处可添加定位失败后的逻辑,不需要可以删掉else分支

# 后续代码会正常执行,不会因为定位失败而中断

注意事项

  • 建议显式使用position is not None做判断,不要直接用if position的隐式布尔判断,可读性更高,也能避免空元组、0等特殊值被误判。
  • 你原有示例里的print('I'm sorry but you lost.')存在单引号冲突问题,需要把外层引号改为双引号,或者给内部的单引号添加转义符\,否则会触发语法错误。
  • 如果需要提高定位成功率,可以在外层加循环逻辑,多次重试定位,达到最大重试次数后再走失败分支。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 03:54:04