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

WhatsApp bot代码运行报'NoneType' object is not subscriptable错误如何解决

错误产生原因

这个报错的核心原因是pt.locateOnScreen()方法执行后返回了None,后续代码直接对None执行[0:2]的切片操作,而None类型不支持下标取值/切片,所以触发该异常。

locateOnScreen返回None的常见触发场景:

  • 当前屏幕没有完整显示punto.png对应的目标图案,被窗口遮挡、处于后台或者在其他虚拟桌面
  • 你设置的confidence=0.7匹配置信度过高,实际屏幕上的目标和截图存在色差、缩放、模糊等差异,无法匹配成功
  • punto.png文件路径错误,程序没有读取到对应图片,直接返回None
  • 设备开启了高DPI缩放,pyautogui没有适配系统缩放比例,导致图像匹配失效
修复方案

首先需要在获取到position后先做非空判断,再执行后续操作,优化后的代码如下:

def punto_verde(self):
    try:
        position =  pt.locateOnScreen("punto.png", confidence= .7)
        # 新增非空判断,匹配失败直接跳过后续操作
        if not position:
            print("未匹配到目标图像punto.png")
            return
        pt.moveTo(position[0:2], duration = self.speed)
        pt.moveRel(-100, 0,duration = self.speed)
        pt.doubleClick(interval= self.click_speed)
    except Exception as e:
        print("Exception (punto_verde):", e)

你还可以根据自己的使用场景做进一步优化:

  • 适当降低匹配置信度,比如调整到0.5~0.6,提升模糊匹配的成功率
  • 重新截取punto.png,保证截图和实际运行时屏幕上的目标图案大小、颜色、角度完全一致,不要截取多余的边缘区域
  • 如果是Windows系统高DPI设备,可以在代码初始化阶段添加DPI适配逻辑:
    import ctypes
    ctypes.windll.user32.SetProcessDPIAware()
    
  • 填写punto.png的绝对路径,避免因为工作目录变动导致的文件读取失败

内容的提问来源于stack exchange,提问作者help me pls

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:24:04