levdneko
@levdneko
Просто я

Как правильно использовать оператор or в pyautogui?

Как правильно использовать оператор or в pyautogui?
if pyautogui.locateOnScreen('link.png') is not None or pyautogui.locateOnScreen('link1.png') is not None:

или
if pyautogui.locateOnScreen('link.png') or pyautogui.locateOnScreen('link1.png') is not None:

т.е. должна быть найдена одна из картинок тогда выполнять.
  • Вопрос задан
  • 315 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Первый вариант правильный, второй не очень.
Но есть два но:
1. Тебе важен только сам факт наличия картинки на экране, или нужны её координаты?
Если нужны координаты, то лучше сделать по умному, и не искать одну и ту же картинку дважды:
# перечисляешь в списке изображения. цикл остановится на первом найденном.
for image in ['link.png', 'link1.png']:
    location = pyautogui.locateOnScreen(image)
    if location is not None:
        break
else:
    image, location = None, None

Тогда дальше сможешь проверить, если location is not None - значит, что-то нашли. Что именно - лежит в image. Где именно - лежит в location.

2. Какая у тебя версия библиотеки pyautogui? Начиная с 0.9.41, вместо функция locateOnScreen(), не найдя изображение, не вернёт None, а выкинет исключение. Тогда код будет выглядеть как-то так:

for image in ['link.png', 'link1.png']:
    try:
        location = pyautogui.locateOnScreen(image)
    except pyautogui.ImageNotFoundException:
        pass
    else:
        break
else:
    image, location = None, None
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Everything_is_bad
начать с того что вообще возвращает locateOnScreen, потому что False, None это разные вещи
Ответ написан
levdneko
@levdneko Автор вопроса
Просто я
if pyautogui.locateOnScreen('link.png')  is not None:

вот так у меня работает но мне нужно чтобы 2 картинки выбирались через или
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы