회사에서 파이썬을 사용하면서 가장 쉽게 자동화할 수 있는 것중에 하나가 바로
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)
'python' 카테고리의 다른 글
[python] list, 배열, array 선언하는 법 (0) | 2023.01.14 |
---|---|
[python] for문 index 주의할 점 (0) | 2023.01.14 |
[python][win32com] 여러 엑셀 파일 자료를 한 시트로 모으기 (0) | 2023.01.03 |
[python][win32com] 파이참에서 설치, 엑셀 여러파일에서 시트를 하나로 모으기 (0) | 2023.01.03 |
오프라인에서 python package 설치하기 (0) | 2021.10.25 |
댓글