出现异常:TypeError无法解压缩不可迭代的NoneType对象



我正在开发一个python机器人,该机器人旨在自动切换点击游戏的鼠标位置,但我一直在随机地得到这个错误。我认为每次运行while命令时给它一个值会修复它,但它没有显示出任何改进。从我使用该程序看到的情况来看,如果它扫描并没有找到它试图定位的2张图像中的任何一张。

错误消息:

Exception has occurred: TypeError
cannot unpack non-iterable NoneType object
File "C:UsersgpetrDesktopNew folder (3)program.py", line 21, in <module>
px, py = eyeloc

代码如下所示:

from pyautogui import *
import pyautogui
import time
import keyboard
import random
import win32api, win32con
def click(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,0,0)
eyeloc = 997, 456
while keyboard.is_pressed('q') == False:
eyeloc = 997, 456
if pyautogui.locateOnScreen('pink.png', region=(576, 160, 842, 592), confidence=0.8)  != None:
eyeloc = pyautogui.locateCenterOnScreen('pink.png', region=(576, 160, 842, 592), confidence=0.8)
print("pink")
px, py = eyeloc  
pyautogui.moveTo(px, py+130, 0.2)
time.sleep(0.4)
elif pyautogui.locateOnScreen('gold.png', region=(576, 160, 842, 593), confidence=0.8)  != None:
eyeloc = pyautogui.locateCenterOnScreen('gold.png', region=(576, 160, 842, 592), confidence=0.8)
print("gold")
gx, gy = eyeloc
pyautogui.moveTo(gx, gy+130, 0.2)
time.sleep(0.4)     

我添加了一个名为eyloc的eyloc副本,该副本在while命令之外被赋予了一个值。在第一个里面,如果我添加

if eyeloc == None:
eyeloc = eyelocc

在第一个结束时,如果eyloc取eyloc的值,那么下次eyloc等于none时,它将收到它的最后一个可用值。我运行了大约10分钟的程序,没有遇到任何问题。代码的最终草案如下:

from pyautogui import *
import pyautogui
import time
import keyboard
import random
import win32api, win32con
eyelocc = 997, 456
while keyboard.is_pressed('q') == False:
if pyautogui.locateOnScreen('pink.png', region=(576, 160, 842, 592), confidence=0.8)  != None:
eyeloc = pyautogui.locateCenterOnScreen('pink.png', region=(576, 160, 842, 592), confidence=0.8)
if eyeloc == None:
eyeloc = eyelocc
px, py = eyeloc
pyautogui.moveTo(px, py+130, 0.2)
time.sleep(0.4)
eyelocc = eyeloc
elif pyautogui.locateOnScreen('gold.png', region=(576, 160, 842, 593), confidence=0.8)  != None:
eyeloc = pyautogui.locateCenterOnScreen('gold.png', region=(576, 160, 842, 592), confidence=0.8)
if eyeloc == None:
eyeloc = eyelocc
gx, gy = eyeloc
pyautogui.moveTo(gx, gy+130, 0.2)  
time.sleep(0.4)    
eyelocc = eyeloc

最新更新