공유 블로그

pyautogui.locateOnScreen이 기본적으로 주 모니터에만 사용할 수 있게 되어 있습니다.

따라서 다중 모니터를 사용하고 있을 시 사용함에 있어 불편하게 됩니다.

 

해결 방법은 간단 합니다.

아래 코드만 추가하시면 됩니다.

from PIL import ImageGrab
from functools import partial
import pyautogui

ImageGrab.grab = partial(ImageGrab.grab, all_screens=True)

i=pyautogui.locateOnScreen(r'이미지경로')
print(i)

 

출처 : https://github.com/asweigart/pyautogui/issues/321

 

 

최근 pyautogui 업데이트 되면서 안되는 버가 있습니다.

해결 방법은 아래와 같습니다.

2025/08/08

pyscreeze.py파일에 빨간부분 제거

_screenshot_win32(imageFilename=None, region=None, allScreens=False)

allScreens매개변수 제거하고 

아래 

    im = ImageGrab.grab(all_screens=allScreens)

all_screens=allScreens부분 제거

 

 

--- 주의사항 ---

더보기

1. pyautogui.locateOnScreen전에 추가를 하셔야 합니다.(import 선언할 때 같이 추가해주세요)

2. ImageGrab와 partial가 없을 시 pip install로 설치하세요

3. 웬만하면 주 모니터에서 pyautogui 사용하세요...

 

--- 추가내용 ---

더보기
if retVal and sys.platform == 'win32':
    # get the lowest x and y coordinate of the monitor setup
    monitors = win32api.EnumDisplayMonitors()
    x_min = min([mon[2][0] for mon in monitors])
    y_min = min([mon[2][1] for mon in monitors])
    # add negative offset due to multi monitor
    retVal = Box(left=retVal[0] + x_min, top=retVal[1] + y_min, width=retVal[2], height=retVal[3])

해당코드는 화면 위치 확인하는 코드 입니다.

retVal 변수 사용하면 됩니다.

 

출처 : https://github.com/asweigart/pyautogui/issues/321

공유하기

facebook twitter kakaoTalk naver band Copy URL