Я пытаюсь написать скрипт на python, который ищет на экране определенный цвет в RGB, получает координаты пикселей и затем отправляет их в функцию щелчка, чтобы щелкнуть по нему. Вот мой код:
from PIL import ImageGrab
import win32api, win32con
def click(x,y):
win32api.SetCursorPos((x,y))
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
color = (10,196,182)
session = False
match = False
while(True):
screen = ImageGrab.grab()
found_pixels = []
for i, pixel in enumerate(screen.getdata()):
if pixel == color:
match = True
found_pixels.append(i)
break
else:
match = False
width, height = screen.size
found_pixels_coords = [divmod(index, width) for index in found_pixels]
if session == False and match == True:
click(found_pixels_coords)
print("Match_Found")
session = True
if session == True and match == False:
session = False
Как я могу преобразовать вывод founds_pixels_coords
, чтобы использовать его внутри функции click(x,y)
? Я также получаю обратные выходные значения, (y,x)
вместо (x,y)
, что я не понимаю, почему.
Вот мой вывод на консоль, на случай, если я совершенно не прав:
Traceback (most recent call last):
File "test2.py", line 28, in <module>
click(found_pixels_coords)
TypeError: click() missing 1 required positional argument: 'y'
EDIT:
click(*found_pixels_coords[0])
, как подсказывает @martineau, похоже, устраняет ошибку отсутствующего аргумента. Я также обошел обратные значения, определив click(y,x)
. Однако, любое правильное решение этого вопроса будет с благодарностью.