Как может pyautogui.pixelMatchesColor работать некорректно?

def perfect_click(name):    # Performs a click after checking for loaded image
    location = None
    image_file = name

    while location is None:
        try:
            location = pyautogui.locateOnScreen(image_file)
        except Exception as e:
            print(e)

    coordinates = pyautogui.center(location)
    x, y = coordinates
    print(coordinates)
    pixel = False
    while pixel is False:
        try:
            pixel = pyautogui.pixelMatchesColor(coordinates, (241, 63, 83), tolerance=10)
        except Exception as e:
            print(e)
    pyautogui.click(coordinates)

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

вот ошибка:

pixelMatchesColor() missing 1 required positional argument: 'expectedRGBColor'

Я знаю, какова будет ваша реакция: "Ну, как говорится, отсутствует" expectedRGBColor"

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

Я запустил программу для печати координат, но она не печатает координаты x и y только в этой функции, отлично работает в другой функции, где она просто зацикливается, пока не найдет изображение и не щелкнет его. Ошибка при отсутствии координат

может кто-нибудь, пожалуйста, помогите мне с этим?

1 ответ

pixelMatchesColor ищет (x, y, expectedRGBColor, tolerance)

Ваш coordinatesпеременная составляет 2 балла, но вы указываете ее только в первом параметре. Вx а также y вы назначаете из него в x, y = coordinates идеально подходит для pixelMatchesColor.

Попробуй это

pixel = pyautogui.pixelMatchesColor(x, y, (241, 63, 83), tolerance=10)

Просто упомяну, что для location = pyautogui.locateOnScreen()
сама функция вернет numpy.intc(вы можете посмотреть на тип (x)).
Сделать pyautogui.pixelMatchesColor() вам нужно преобразовать numpy.intc к int.

Другие вопросы по тегам