안녕하세요, 지꿀입니다. 요즘 파이썬을 이용한 자동화, 매크로 제작에 관심이 생겨 열심히 공부중이에요. 가장 흔히 쓰이는 패키지로 pyautogui
와 pywinauto
두 가지가 있는데 이번 포스팅에서는 pyautogui
를 이용한 자동 클릭 이벤트에 대한 글을 써보려고 합니다.
파이썬 자동화
자동화 매크로란
자동화 매크로는 반복적이고 지루한 작업을 간편하게 처리하는 데 도움이 되는 프로그램입니다. 특히, 사용자가 컴퓨터 상에서 반복하는 특정 동작들을 자동으로 수행하여 생산성을 향상시킬 수 있어요. 이번 포스팅에서 파이썬의 pyautogui
패키지를 활용한 자동 클릭 매크로를 간단히 구현해보겠습니다.
pyautogui 패키지
pyautogui
는 파이썬에서 사용되는 자동화 도구로, 마우스 및 키보드 동작을 제어할 수 있는 기능을 제공합니다. 간단하고 직관적인 API를 통해 화면 캡처, 마우스 이동, 클릭, 키보드 입력 등을 자동화할 수 있습니다. 사용이 어렵지 않아 다양한 자동화 작업에 적합하며, 특히 GUI 기반의 소프트웨어에서의 자동화에 많이 쓰입니다.
자동 클릭 매크로 구현하기
많은 사람들이 익숙하게 사용하는 PowerPoint 앱에서 아이콘 이미지를 사용하여 자동으로 클릭하는 매크로를 간단하게 구현해 보겠습니다.
구현 시나리오
파워포인트 앱에서 자동으로 새 슬라이드 추가하기
전체화면 캡쳐하기
파워포인트가 실행된 상태에서 아래 코드를 통해 전체 화면을 캡처하고 저장할 수 있습니다.
import pyautogui
pyautogui.screenshot('full_screen.png') #스크린샷 이미지 저장
visual studio code에서 실행한 화면입니다. 여기서 누르고자 하는 새 슬라이드 아이콘 부분을 새로 캡처해 주었어요. 캡처까지 자동화를 원한다면, pywinauto
를 활용하면 가능합니다! 추후에 이 부분도 포스팅해 보겠습니다.
클릭할 대상 아이콘 혹은 영역 캡쳐하기
저는 해당 영역을 캡처한 후 target.png라는 이름으로 저장했어요.
클릭 구현하기
target_location = pyautogui.locateOnScreen('target.png')
print(target_location)
실행 결과는 아래와 같아요. left, top, width, height는 해당 영역의 좌표를 의미합니다.
원하는 영역을 안전하게 클릭하려면 해당 영역의 중앙을 클릭하는게 좋겠죠? center()
함수를 이용하여 중앙 좌표를 이용한 후, 이동하여 클릭을 실행해줍니다.
# 중앙 좌표 구하기
center_point = pyautogui.center(target_location)
# 중앙 좌표로 이동하기
pyautogui.moveTo(center_point.x, center_point.y)
# 클릭 실행
pyautogui.click()
위의 예제처럼 타겟 영역의 좌표들을 모두 구한 후 다시 중앙값을 구할 수도 있지만..! 해당하는 영역의 중심 좌표를 바로 리턴해주는 함수 locateCenterOnScreen()
을 쓸 수도 있습니다.
center_point = pyautogui.locateCenterOnScreen('target.png')
pyautogui.moveTo(center_point.x, center_point.y)
pyautogui.click()
아래 이미지와 같이 새 슬라이드가 잘 생성되었어요 😊
pyautogui
가 좌표, 방향으로써 마우스를 움직이며 자동화를 한다면 pywinauto
는 직접 앱의 dialog
를 획득하여 각 요소를 Tree 계층으로 분석할 수 있는데요. 다음에는 pywinauto
에 대한 글을 써보도록 하겠습니다! 두 가지를 적절히 활용하면 꽤 괜찮은 매크로를 제작하여 반복 작업의 효율을 극대화 할 수 있을 것 같아요. 감사합니다.