pyautogui.locateCenterOnScreen 返回NoneType错误

代码如下:

import pyautogui

pyautogui.PAUSE = 1 # 调用在执行动作后暂停的秒数,只能在执行一些pyautogui动作后才能使用,建议用time.sleep
# pyautogui.FAILSAFE = True # 启用自动防故障功能,左上角的坐标为(0,0),将鼠标移到屏幕的左上角,来抛出failSafeException异常
pyautogui.FAILSAFE = False

img_point = pyautogui.locateCenterOnScreen("img/project.png", grayscale=False)
print(img_point)

结果报如下错误

Traceback (most recent call last):
  File "C:/Users/liucx/Desktop/python/windows服务器监控/控制桌面程序.py", line 24, in 
    img_point = pyautogui.locateCenterOnScreen("img/project.png", grayscale=False)
  File "C:\Users\liucx\Anaconda3\lib\site-packages\pyautogui\screenshotUtil.py", line 112, in locateCenterOnScreen
    return center(locateOnScreen(image, grayscale))
  File "C:\Users\liucx\Anaconda3\lib\site-packages\pyautogui\screenshotUtil.py", line 180, in center
    return (coords[0] + int(coords[2] / 2), coords[1] + int(coords[3] / 2))
TypeError: 'NoneType' object is not subscriptable

这个发现是由于在lib\site-packages\pyautogui\screenshotUtil.py里面的175行,这里没有用try方法,如果上一步112行这里返回None的话,那么下面的175行这里也会直接报错不再运行了,解决办法是在175行那里添加try方法:

def center(coords):
    print(coords)
    try:
        return (coords[0] + int(coords[2] / 2), coords[1] + int(coords[3] / 2))
    except:
        return coords
    # return (coords[0] + int(coords[2] / 2), coords[1] + int(coords[3] / 2))

你可能感兴趣的:(python3,python,开发语言,后端)