Как может 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
.