pyautogui.locateCenterOnScreen 返回NoneType错误
Posted Jason_WangYing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 <module>
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))
以上是关于pyautogui.locateCenterOnScreen 返回NoneType错误的主要内容,如果未能解决你的问题,请参考以下文章