Есть большая картинка с цифрой 8.
Во-первых, я хочу обнаружить большую картинку, как показано ниже:
left, top, width, height = pyautogui.locateOnScreen('original.png', confidence=0.3)
Во-вторых, если обнаружено большое изображение, я хочу сузить его, чтобы найти число 8.
x, y = pyautogui.locateCenterOnScreen('number8.png', confidence=0.8, region=(left, top, width, height))
Наконец, я хочу нажать на цифру 8
pyautogui.click(x, y)
Это мой код, но он возвращает ошибку ниже:
TypeError: cannot unpack non-iterable NoneType object
import time
import pyautogui
time.sleep(1)
left, top, width, height = pyautogui.locateOnScreen('original.png', confidence=0.3)
if left is None:
print("Not Detected")
else:
print("Detected")
x, y = pyautogui.locateCenterOnScreen('number8.png', confidence=0.8, region=(left, top, width, height))
if x is None:
print("Error")
else:
print("Clicked")
pyautogui.click(x, y)
Да, locateCenterOnScreen можно использовать с регионом. Эта ошибка, которую вы получаете, связана с тем, что pyautogui просто не может найти объект. И поскольку результата нет, он не может использовать итерацию для присвоения переменных вашим x и y
эта линия здесь никогда не будет правдой
if x is None:
Потому что эта строка выдаст ошибку, если объект не найден
x, y = pyautogui.locateCenterOnScreen('number8.png', confidence=0.8, region=(left, top, width, height))
Чтобы решить вашу проблему, не форсируйте результат на итерации. Назначьте его одной переменной, затем вызовите каждый x и y из этой переменной.
Coord = pyautogui.locateCenterOnScreen('number8.png', confidence=0.8, region=(left, top, width, height))
if Coord is None:
print("Error")
else:
pyautogui.click(Coord.x, Coord.y)
Я обновил свой ответ, чтобы помочь вам решить проблему
Тогда что мне использовать? Как насчет ниже? если х Ошибка: