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 循环后它会崩溃吗?
最佳答案
我认为你需要修复逻辑。现在您正在屏幕上寻找两个对象。您的声明是说,如果找不到第一个对象但找到第二个对象,则从第一个对象分配坐标...这是 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)
此外,我建议您使用中断键进行编码,这样很容易中断此循环
关于python - PyAutoGui 类型错误 : cannot unpack non-iterable NoneType object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70442076/