반원 블로그

2. pyautogui : 키보드 마우스 제어 패키지 본문

2018~/Python Skill Up

2. pyautogui : 키보드 마우스 제어 패키지

반원_SemiCircle 2019. 9. 5. 17:38

개요

  • 노트북의 마우스, 키보드를 제어함으로서 자동화를 구현하기위해 사용할 수 있는 외부 패키지

연습용 이미지

practice_base1.png
0.16MB

설치

설치 가이드 및 레퍼런스 문서

Windows

  • pip install pyautogui

Mac

  • pip3 install pyobjc-core
  • pip3 install pyobjc
  • pip3 install pyautogui

Linux

  • pip3 install python3-xlib
  • sudo apt-get install scrot
  • sudo apt-get install python3-tk
  • sudo apt-get install python3-dev
  • pip3 install pyautogui

테스트 확인 OS

  • 윈도우, 맥

유사 또는 같이 자주 사용되는 패키지 및 모듈

  • mouse
  • keyboard
  • pypnut
  • pywinauto
  • pyhook
  • system_hotkey
  • pyuserinput

기타사항

  • 듀얼 모니터일 경우 메인 모니터만 제대로된 인식 가능
  • 왼쪽 상단으로 마우스를 올릴 경우(0,0) 안정장치가 내장되있어서 자동화가 종료된다.
  • 안전 장치 제거를 위해 pyautogui.FAILSAFE = False 를 적을 수 있다.
  • 각 행동에 기본 딜레이를 지정할 수 있다. pyautogui.PAUSE = 2.5
  • 이미지 인식 기능을 사용하기위해선 opencv-python 패키지를 설치한다.

핵심 코드

#마우스 클릭관련 
click(x=None, y=None, clicks=1, interval=0.0, button=PRIMARY, duration=0.0, tween=linear, pause=None, logScreenshot=None, _pause=True)
leftClick(x=None, y=None, interval=0.0, duration=0.0, tween=linear, pause=None, logScreenshot=None, _pause=True)
rightClick(x=None, y=None, interval=0.0, duration=0.0, tween=linear, pause=None, logScreenshot=None, _pause=True)
middleClick(x=None, y=None, interval=0.0, duration=0.0, tween=linear, pause=None, logScreenshot=None, _pause=True)
doubleClick(x=None, y=None, interval=0.0, button=LEFT, duration=0.0, tween=linear, pause=None, logScreenshot=None, _pause=True)
tripleClick(x=None, y=None, interval=0.0, button=LEFT, duration=0.0, tween=linear, pause=None, logScreenshot=None, _pause=True)

# 키보드 관련
typewrite(message, interval=0.0, pause=None, logScreenshot=None, _pause=True)
keyDown(key, pause=None, logScreenshot=None, _pause=True)
keyUp(key, pause=None, logScreenshot=None, _pause=True)
press(keys, presses=1, interval=0.0, pause=None, logScreenshot=None, _pause=True)

#마우스 좌표 및 이동 관련
moveTo(x=None, y=None, duration=0.0, tween=linear, pause=None, logScreenshot=False, _pause=True)
moveRel(xOffset=None, yOffset=None, duration=0.0, tween=linear, pause=None, logScreenshot=False, _pause=True)
position(x=None, y=None)

#인식 화면 및 이미지 인식 관련
size()
locateCenterOnScreen(image, **kwargs)
locateOnScreen(image, minSearchTime=0, **kwargs)

특수키 입력 방법

연습 예제 1 - 화면크기 조회 및 타이핑 함수

import pyautogui

#현재 화면 사이즈 확인
print(pyautogui.size())

#타이핑 함수
time.sleep(2)
pyautogui.typewrite('Hello World')
pyautogui.typewrite('Hello World',interval=0.25)

#마우스 이동
pyautogui.moveTo(100,100)

연습 예제 2 - 이미지 인식 예제

import pyautogui , time

print('찾기 시작')

#이미지 중앙 좌표 찾기, confidence : 정확도
pos = pyautogui.locateCenterOnScreen('banana.png')
# pos = pyautogui.locateCenterOnScreen('banana.png',confidence=0.8)

print('중앙 좌표' , pos)
pyautogui.moveTo(pos[0],pos[1]) #이미지 중앙으로 마우스 이동
time.sleep(3)

#이미지 왼쪽, 위, 가로길이, 세로길이 좌표 찾기, confidence : 정확도
pos = pyautogui.locateOnScreen('banana.png')
print('박스 모델 좌표', pos)
pyautogui.moveTo(pos[0],pos[1]) #왼쪽 위로 이동

연습 예제 3 - 현재 마우스 좌표 확인

import pyautogui as pg
import time

for i in range(30):
    print(pg.position())
    time.sleep(.3)

추가 참고

크롬 공룡게임 및 팀버맨 자동화
진행검 키우기 자동화
절대 안걸리는 모바일 게임 매크로 만들기

Comments