본문 바로가기
python

[python][pyautogui] 자동화의 기본 pyautogui 기초명령어

디지털노마드 2023. 1. 13.
반응형

회사에서 파이썬을 사용하면서 가장 쉽게 자동화할 수 있는 것중에 하나가 바로

pandas 또는 win32com 을 이용한 엑셀 자동화와 pyautogui 를 이용한 자동으로 움직이는 키보드와 마우스이다. 

요즘에는 pyautogui 가지고 노는것이 맛들렸는데, 

자동으로 움직이는 것이 눈에 보이는게 아주 재미있다. 

 

모니터 사이즈

import pyautogui
print(pyautogui.size())
#Size(width=1920, height=1080)

위와 같이 pyautogui 를 import 시키고 지금 보고있는 컴퓨터의 메인 모니터의 화면 크기를 가져올 수 있다. 

단, 여러개의 모니터를 사용하면서 pyautogui 를 사용하는 것은 어렵다고 한다. 

 

두개의 모니터를 사용중인데, 특정한 이미지를 찾아서 

발견하면 클릭하는 프로그램을 만들고 있었는데, 메인 모니터가 아닌

서브 모니터에 그림이 있을 때에는 pyautogui 가 이미지를 찾지 못하거나, 

강제로 찾더라도 좌표가 이상해서 사용할 수가 없었다. 

 

*pyautogui 는 모니터가 1개일때, 또는 메인 모니터에서만 사용할 것

sleep 기능

import time
time.sleep(2)
pyautogui.sleep(2)

time 패키지에 있는 sleep 을 써도 되고 (초)

pyautogui 에 있는 패키지를 써도 된다. (초)

 

마우스 관련 기능

print(pyautogui.position())

현재 마우스의 위치 좌표 (x, y) 를 가져온다. 

while True:
    print(pyautogui.position())

이런식으로 while 을 무한루프 돌리면 계속해서 움직이는 마우스의 위치를 추적해서

x좌표 y좌표 값을 찍어준다. 

 

pyautogui.mouseInfo()

이 코드를 찍으면 MouseInfo라는 프로그램이 실행되면서 

실시간으로 마우스의 좌표나 가르키고 있는 부분의 색 등의 정보를 보여준다. 

 

pyautogui.moveTo(300, 350)

프로그램의 기본이 되는 마우스를 (300, 350) 좌표로 보내는 코드다. 

 

 

pyautogui.moveTo(300, 400, 3)

마우스를 (300, 400) 의 위치로 3초동안 (정확히 3초는 아닌듯) 움직이면서 이동시켜 준다. 

duration 이 충분히 길면 마우스가 실시간으로 이동하는 모습이 보인다. 

 

pyautogui.move(300, 400)

메뉴얼 안보고 하다가 했갈린 부분, moveTo 는 정확한 좌표로 마우스가 이동하지만, 

move 는 현재 위치에서 그만큼 이동한다. 즉 상대좌표로 이동하게 된다. 

현재 (100, 100) 에 있는데 move (300, 400) 이 들어오면 (100 + 300, 100 + 400) = (400, 500) 의 좌표도 이동한다. 

 

pyautogui.click()

현재 위치에서 클릭하는 코드

 

pyautogui.click(button='left')
pyautogui.doubleClick()
pyautogui.click(clicks = 2, interval = 3)

이런식으로 오른쪽 버튼, 왼쪽버튼, 가운데 버튼, 더블클릭을 선택할 수 있고,

클릭하는 횟수나 간격을 설정 할 수 있다. 

 

targetImg = pyautogui.locateOnScreen("imgname.png")
print(targetImg)

imgname.png 라는 이미지를 찾아서 좌표와 크기를 반환한다. (x, y, width, height)

 

 

반응형

댓글