PyAutoGui находит кнопку, но только при подключении к моему монитору

PyAutoGui отлично находит кнопку при подключении к моему монитору, на котором я кодирую, но не может найти изображение на экране, когда я на своем ноутбуке.

Контекст: я просто автоматически запускаю Clean My Mac.

Вот код:

import pyautogui
import subprocess
import time
import cv2
from termcolor import colored


print('Starting'.format(), end='\r')
subprocess.call(
    ["/usr/bin/open", "/Applications/CleanMyMac.app"]
    )
time.sleep(3)


print('Starting'.format(), end='\r')
scanButton = None
scanButton = pyautogui.locateOnScreen('scan.png', grayscale = True, 
confidence = .9)

scan = None
scan = pyautogui.center(scanButton)


pyautogui.moveTo(scan)
pyautogui.click(scan)



runButton = None 


while runButton == None:

    try:

    runButton = pyautogui.locateOnScreen('run.png', grayscale = True, confidence = .9)
    clean = None
    clean = pyautogui.center(runButton)
    print(('Scan'), ('['), colored('Complete','green'), (']'))

except TypeError:
    runButton = None
    print('Scanning...'.format(), end='\r')



pyautogui.moveTo(clean)
pyautogui.click(clean)

ignoreButton = None

time.sleep(3)
while ignoreButton == None:
try:
    print('Ignoring Chrome [running]'.format(), end='\r')
    ignoreButton = pyautogui.locateOnScreen('ignore.png', grayscale = True, confidence = .9)
    ignore = None
    ignore = pyautogui.center(ignoreButton)
    print(('Ignoring Chrome'), ('['), colored('Complete','green'), (']'))
    pyautogui.moveTo(ignore)
    pyautogui.click(ignore)

except TypeError:
    ignoreButton = True
    print(('Ignoring Chrome'), ('['), colored('Not Required','green'), (']'))



completeButton = None

while completeButton == None:
try:
    completeButton = pyautogui.locateOnScreen('complete.png', grayscale = True, confidence = .9)
    complete = None
    complete = pyautogui.center(completeButton)
except TypeError:
    completeButton = None
    print('Optimizing System...'.format(), end='\r')

print(('System Status'), ('['), colored('Optimized','green'), (']'))
print('All Systems Go, Captain!')

closeButton = pyautogui.locateOnScreen('close.png')#, grayscale = True, confidence = .8)
close = pyautogui.center(closeButton)
pyautogui.moveTo(close)
pyautogui.click(close)

Мне интересно, не потому ли это, что пиксели немного расходятся между ними, но я также использую оттенки серого, что должно помочь в этом.


person DillonCarter    schedule 11.05.2019    source источник


Ответы (1)


Кнопка, вероятно, масштабируется при переходе с монитора на ноутбук, поэтому pyautogui не может найти меньшее изображение. вам нужно будет создать проверку (скорее всего, pyautogui.size()), чтобы увидеть, находитесь ли вы на своем ноутбуке и используете меньшее изображение.

person Gamerboy    schedule 27.05.2019
comment
Это имеет большой смысл. Я создам чек. Большое спасибо! - person DillonCarter; 29.05.2019