Есть ли способ, где можно определить значение RGB определенного пикселя и использовать его в условии if? - PullRequest
3 голосов
/ 05 апреля 2019

Я пытаюсь написать скрипт, который автоматизирует скучные вещи на работе. Для этого я использую "pyautogui", и большая часть сценария выполнена. ОС Windows, кстати.

Моя проблема в том, что в настоящее время я использую команды time.sleep (), чтобы скрипт работал между каждым этапом процесса, но было бы лучше определить значение RGB определенного пикселя.

То, что я сделал сейчас, похоже на это;

pyautogui.click(req_management_find[0],req_management_find[1])    
time.sleep(2)
pyautogui.click(req_management_print[0],req_management_print[1])
while True:
         time.sleep(0.5)
         pix=pyautogui.pixel(1348,131)
         if pix[1] == 27 and pix[2] == 161 and pix[3] == 226:
           break
         else:
                 time.sleep(0.5)

pyautogui.click(req_print_close[0],req_print_close[1])

Это просто ждет вечно, а не прерывает цикл while. Я прочитал значение RGB пикселя, используя pyautogui.displayMousePosition(). Это (255, 255, 255) нормально. Через некоторое неопределенное время программа, которую я пытаюсь выполнить, выдает всплывающее окно, которое меняет RGB пиксела с (255, 255, 255) на (27, 161, 226).

Почему мой код не обнаруживает это изменение?

1 Ответ

3 голосов
/ 05 апреля 2019

Индексы начинаются с 0, поэтому это:

if pix[0] == 27 and pix[1] == 161 and pix[2] == 226:

или вы можете сделать это более явным, используя:

if pix.red == 27 and pix.green == 161 and pix.blue == 226:

И, конечно же, как подсказал @Aditya Santoso:

if pix == (27, 161, 226):
...