почему мой код pyautogui не работает хорошо

Я создаю простой скрипт для поиска изображения на рабочем столе и набираю «Я нашел его», а если я скрываю изображение, тип скрипта «Я не могу его найти».

проблема, когда я добавляю другое действие, то есть я хочу, чтобы мышь переместилась в положение изображения. скрипт работает хорошо, но когда я скрываю изображение, мышь все еще перемещается в позицию, и все равно печатаю, что нашел. Но обычно код должен показывать мне, что я не могу его найти. сценарий все еще работает, если вместо этого перейти к другому.

мой код:

import pyautogui
import time

location = pyautogui.locateOnScreen('image.png', confidence = 0.6)

while 1:
    if location:
        print("I found it ")
        time.sleep(2)
        print(pyautogui.moveTo(location))

    else:
        print("I am unable to found it")

person Rachid El    schedule 27.01.2021    source источник
comment
Возможно, я неправильно понял ваш вопрос, но вы просто проверяете, существует ли переменная location - не более того. Он будет существовать после вашей первой проверки, даже если это уже не оператор True.   -  person xtlc    schedule 27.01.2021
comment
@xtlc это неправда. Выполнение if variable: не проверяет, существует ли он. Он проверяет, является ли его значение истинным. Если бы его не существовало, было бы поднято NameError...   -  person Tomerikoo    schedule 27.01.2021
comment
Вы правы, мое объяснение было плохим в этом отношении. Тем не менее, состояние location никогда не изменяется в цикле while, поэтому, если он однажды окажется в предложении if, он будет всегда (по крайней мере, так выглядел код до его редактирования).   -  person xtlc    schedule 27.01.2021
comment
Что вы имеете в виду под скрыть логотип? Очевидно, что pyautogui все еще может найти. Отладить почему. У нас недостаточно информации, чтобы реально помочь...   -  person Tomerikoo    schedule 27.01.2021
comment
@xtlc Я согласен. Цикл кажется немного бессмысленным...   -  person Tomerikoo    schedule 27.01.2021
comment
@Tomerikoo, не могли бы вы исправить мой код   -  person Rachid El    schedule 27.01.2021
comment
@Tomerikoo в моей треске есть два условия: ЕСЛИ - первое условие: значит, скрипт нашел изображение, и введите «Я нашел его», и мышь переместится на изображение. иначе является вторым условием: поэтому, если я скрою изображение во время работы скрипта, должен автоматически ввести текст, я не могу его найти. проблема в том, что когда я скрываю изображение, скрипт все еще перемещается в позицию изображения и набирает «я нашел его», но обычно скрипт должен перемещаться в els   -  person Rachid El    schedule 27.01.2021
comment
Но вы никогда не меняете location внутри цикла... Так что даже если вы переместите окно, сохраненное location останется тем, которое было с самого начала... Вам нужно переместить location = pyautogui.locateOnScreen('image.png', confidence = 0.6), чтобы он оказался внутри< /b> цикл   -  person Tomerikoo    schedule 27.01.2021


Ответы (1)


вы сохраняете pyautogui.locateOnScreen('image.png', confidence = 0.6) в переменной location. Затем вы проверяете условие (if/else). Но тогда вы никогда не перепроверяете pyautogui.locateOnScreen('image.png', confidence = 0.6). Я все еще не уверен, чего вы пытаетесь добиться здесь, но, по крайней мере, проверка должна идти в while:

while 1:
    location = pyautogui.locateOnScreen('image.png', confidence = 0.6)
    if location:
        print("I found it ")
        time.sleep(2)
        print(pyautogui.moveTo(location))
    else:
        print("I am unable to find it")
person xtlc    schedule 27.01.2021