[파이썬] pyautogui 화면 해상도에 따른 스크립트 수정

스크린 캡처, 자동화, GUI 제어 등에 유용한 pyautogui 라이브러리를 사용하면 윈도우 크기와 해상도에 따라 스크립트를 수정해야 할 때가 있습니다. 이 글에서는 이러한 상황에서 어떻게 스크립트를 수정할 수 있는지 알아보겠습니다.

1. 현재 화면의 해상도 얻기

먼저, 스크립트의 일부로 현재 화면의 해상도를 얻는 코드를 작성해야 합니다. pyautogui 라이브러리의 size() 함수를 사용하여 현재 화면의 가로 및 세로 해상도를 얻을 수 있습니다.

import pyautogui

screen_width, screen_height = pyautogui.size()
print(f"Screen resolution: {screen_width}x{screen_height}")

위의 코드를 실행하면 현재 화면의 해상도를 출력할 수 있습니다. 이 정보는 스크립트의 나머지 부분에서 사용될 것입니다.

2. 절대 좌표와 상대 좌표 사용하기

pyautogui 에서는 좌표를 지정할 때 절대 좌표 및 상대 좌표 두 가지 방식을 사용할 수 있습니다.

스크립트를 수정할 때는 절대 좌표와 상대 좌표를 적절하게 사용하여 코드를 작성해야 합니다.

3. 스크린 캡처를 위한 위치 재조정

스크린 캡처는 화면의 특정 영역을 캡처하는 기능을 말합니다. 여기서는 스크린 캡처를 위해 pyautogui.screenshot() 함수를 사용할 것입니다. 하지만, 화면 해상도 변경 시 캡처 위치를 재조정해야 할 수 있습니다.

예를 들어, 아래와 같이 현재 화면의 해상도를 고려하여 캡처 영역을 지정할 수 있습니다.

capture_width = 800  # 캡처 영역의 가로 크기
capture_height = 600  # 캡처 영역의 세로 크기

capture_x = (screen_width - capture_width) // 2  # 캡처 영역의 x 좌표
capture_y = (screen_height - capture_height) // 2  # 캡처 영역의 y 좌표

# 캡처 영역 지정
capture_area = (capture_x, capture_y, capture_width, capture_height)

# 스크린 캡처 수행
screenshot = pyautogui.screenshot(region=capture_area)
screenshot.save("screenshot.png")

위의 코드에서는 캡처 영역의 크기와 위치를 현재 화면의 해상도에 맞게 조정한 후, pyautogui.screenshot() 함수를 실행하여 해당 영역을 캡처합니다. 이렇게 수정된 스크립트는 화면 해상도 변경 시에도 정확한 캡처 영역을 가져올 수 있습니다.

4. GUI 자동화에서 좌표 조정

GUI 자동화 작업에서도 화면 해상도에 따라 좌표를 조정해야 할 때가 있습니다. 예를 들어, 어떤 버튼을 클릭하거나 특정 입력 필드에 값을 입력하는 작업을 수행할 때, 클릭 또는 입력할 좌표를 화면의 해상도에 따라 동적으로 조정해야 합니다.

button_x = 100  # 버튼의 x 좌표
button_y = 200  # 버튼의 y 좌표

# 화면 해상도에 따라 좌표 자동 조정
button_x = button_x * screen_width // 1920
button_y = button_y * screen_height // 1080

# 버튼 클릭
pyautogui.click(button_x, button_y)

위의 코드에서는 버튼의 원래 좌표를 화면 해상도에 맞게 조정한 후, pyautogui.click() 함수를 사용하여 해당 위치를 클릭하는 작업을 수행합니다. 따라서 다양한 화면 해상도에서도 올바른 위치를 클릭할 수 있습니다.

5. 결론

pyautogui를 활용한 스크립트 작성 시에는 화면의 해상도에 따라 스크립트를 수정해야 할 필요가 있습니다. 절대 좌표와 상대 좌표를 적절하게 사용하며, 스크린 캡처와 GUI 자동화 등 다양한 작업에서 해상도에 맞게 좌표를 조정할 수 있습니다. 이를 통해 다양한 환경에서도 원활한 스크립트 실행이 가능하게 됩니다.