PyAutoGui TypeError:无法解压不可迭代的 NoneType 对象
Posted
技术标签:
【中文标题】PyAutoGui TypeError:无法解压不可迭代的 NoneType 对象【英文标题】:PyAutoGui TypeError: cannot unpack non-iterable NoneType object 【发布时间】:2022-01-23 06:23:15 【问题描述】: import pyautogui
import cv2
import time
while(True):
TradeFrom = pyautogui.locateCenterOnScreen("Screenshot_256.png", grayscale= True, confidence=0.9)
TradeTo = pyautogui.locateCenterOnScreen("Screenshot_258.png", grayscale=True, confidence=0.9)
if TradeFrom == None:
if TradeTo == None:
time.sleep(30)
continue
elif TradeTo != None:
z,t=TradeFrom
pyautogui.moveTo(z,t,3)
pyautogui.rightClick()
#TODO ÇOK YAPILACAK ŞEY VAR AMK
else:
x,y = TradeTo
pyautogui.moveTo(x,y,3)
pyautogui.rightClick()
InviteToParty = pyautogui.locateCenterOnScreen("InviteToParty.png", grayscale= True, confidence=0.9)
Invite_X,Invite_Y = InviteToParty
pyautogui.moveTo(Invite_X,Invite_Y)
精确输出:
Traceback (most recent call last):
File "C:/Users/emosc/PycharmProjects/heuheu/main.py", line 12, in <module>
z,t=TradeFrom
TypeError: cannot unpack non-iterable NoneType object
如果我将 TradeFrom 和 TradeTo 放在 while 循环之外,一切正常,谁能解释为什么我把它放在 while 循环中后它会崩溃?
【问题讨论】:
不确定我能否具体回答您的问题,但更好的做法是声明is None
而不是使用 == None
运算符。有关更多信息,请参阅:realpython.com/courses/python-is-identity-vs-equality 编辑:仔细观察,我认为您的问题是您正在尝试对 None
执行操作。将您的相等运算符更改为 is
(即:if x == None
变为 if x is None
,同样if y != None
变为 if y is not None
)然后重试。
【参考方案1】:
我认为你需要修正逻辑。现在,您正在屏幕上寻找两个对象。您的声明是说,如果未找到第一个对象但第二个对象是,则从第一个对象分配坐标......这是 None ,这就是您的代码失败的原因。不确定预期的结果是什么,但不妨试试这个:
import pyautogui
import cv2
import time
while(True):
TradeFrom = pyautogui.locateCenterOnScreen("Screenshot_256.png", grayscale= True, confidence=0.9)
TradeTo = pyautogui.locateCenterOnScreen("Screenshot_258.png", grayscale=True, confidence=0.9)
if TradeFrom == None:
if TradeTo == None:
time.sleep(30)
continue
elif TradeTo != None:
z,t=TradeTo
pyautogui.moveTo(z,t,3)
pyautogui.rightClick()
#TODO ÇOK YAPILACAK ŞEY VAR AMK
else:
x,y = TradeFrom
pyautogui.moveTo(x,y,3)
pyautogui.rightClick()
InviteToParty = pyautogui.locateCenterOnScreen("InviteToParty.png", grayscale= True, confidence=0.9)
Invite_X,Invite_Y = InviteToParty
pyautogui.moveTo(Invite_X,Invite_Y)
另外,我建议你在 break 键中编码,这样很容易中断这个循环
【讨论】:
以上是关于PyAutoGui TypeError:无法解压不可迭代的 NoneType 对象的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:无法在 Django REST 框架中解压不可迭代的 int 对象
Python无法使用PyAutoGui补间将鼠标作为函数中的随机值移动