일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- git
- matlab
- 파이썬GUI
- Windows10
- Outlook
- VBA
- 깃
- 파워포인트
- python3
- Windows11
- win32com
- 윈도우10
- 문자열
- 윈도우11
- 안드로이드
- 파이썬3
- office
- pyqt5
- pythongui
- html
- 아웃룩
- 오피스
- pandas
- Android
- 비주얼베이직
- 파이썬
- Excel
- 엑셀
- python
- windows
Appia의 IT세상
파이썬[Python] PyAutogui 설치, 사용법(매크로/Macro 제작에 사용됨) 본문
세상에서 가장 싫어하는 일들을 나열하면 엄청 많지만, 그 중에 회사에서 하는 일 중 문서 및 단순 반복 클릭 작업들을 매우 싫어합니다. 특히 예전에 테스트를 구동하는 GUI를 제작한 적이 있는데 이 부분에 대해서 버튼으로 매번 눌러줘야 했던 기억이 갑자기 떠오르네요. 그래서 이럴 때, 오토핫키(AutolHotKet)등과 같은 매크로를 이용하곤 했습니다. 그리고 몇년 전 언론에서 매우 시끄럽게 만들었던, 드루킹사건등도 매크로 관련된 것입니다.
그래서 이번 포스팅은 Python에서 제공하는 부분을 바탕으로 매크로 프로그램을 만들 때 자주 사용되는 모듈에 대해서 설명을 드리고자 합니다. 그런 후에, 다른 포스팅을 통해서 간단한 매크로 프로그램을 만들어 보고자 합니다.
PyAutoGui 설치
그럼 예전에도 많이 사용한 pip명령어를 사용해보도록 하겠습니다. 커맨드 콘솔 창에서 다음 명령을 입력해 주시길 바랍니다.
pip install pyautogui
그럼 다음과 같은 화면이 나타날 것입니다.
PyAutoGui 메소드 소개
PyAutoGui는 다음과 같이 5가지 항목으로 나누어 살펴볼 수 있습니다.
- 일반기능
- 마우스 관련 기능
- 키보드 관련 기능
- 메시지박스 기능
- 스크린 샷 기능
흔히 매크로 프로그램을 만드는데 필수적인 부분들이라고 생각이 듭니다. 그럼 각 항목들에 대해서 간단히 살펴보면서 예제 또한 함꼐 살펴보도록 하겠습니다.
일반기능
주요 위치 정보를 구하거나, 스크린 해상도를 구하는 정도의 함수로 구성되어 있습니다.
position() | 마우스의 현재 좌표를 리턴 |
size() | 현재 스크린의 해상도를 리턴 |
onScreen(x,y) | x,y가 현재 해상도 내에 존재하는지에 대해서 확인 (True/False형태로 리턴) |
example)
import pyautogui print(pyautogui.position()) print(pyautogui.size()) print(pyautogui.onScreen(1000,2000)) print(pyautogui.onScreen(1000,1000)) | cs |
result)
Point(x=-1833, y=588) Size(width=1920, height=1080) False True | cs |
마우스 관련 기능
마우스의 커서 포인트를 이동하거나, 드래그 하거나 클릭하는 형태입니다.
moveTo(x, y, duration=Nseconds) | 마우스 커서를 x, y 좌표로 N초동안 이동 |
moveRel(x, y, duration=Nseconds) |
마우스 커서를 현재 좌표에서 +x, +y만큼 N초 동안 이동 (현재 좌표위치에서 +x, +y만큼 이동) |
dragTo(x, y, duration=Nseconds) | 마우스를 x,y좌표로 N초동안 드래그 |
dragRel(x, y, duration=Nseconds) | 마우스를 현재 좌표에서 +x, +y만큼 이동한 위치로 N초 동안 드래그 |
click관련해서는 다음 부분을 고려해주셔야 합니다.
pyautogui.click(x=moveToX, y=moveToY, clicks=num_of_clicks, interval=secs_between_clicks, button='left')
x, y | 입력해주실 경우 moveTo한 경우의 효과 |
clicks | 클릭 횟수 |
interval | 클릭 간의 시간 격차(초) |
button | 마우스 클릭 위치 |
위의 클릭의 대한 인자값들을 살펴봤습니다만, 다른 형태의 메소드로 각 클릭 횟수를 제어 가능합니다.
pyautogui.rightClick(x, y) #우측 버튼 클릭 pyautogui.doubleClick(x, y) #더블 클릭 pyautogui.tripleClick(x, y) # 3번 클릭 | cs |
그리고 마우스 관련해서는 몇가지가 더 있어서 같이 소개하겠습니다.
스크롤(Scroll)관련해서는 다음 함수를 참조 부탁드립니다.
pyautogui.scroll(amount_to_scroll, x=moveToX, y=moveToY) | cs |
amount_to_scroll의 값이 양수이면, 스크롤(scroll) 업, 음수이면 스크롤(scroll) 다운입니다.
그리고 마우스 버튼을 누르고 있는 명령어도 있습니다. 이 명령어를 통해서 위의 DragTo와 유사한 기능을 만들 수 도 있습니다. 다음 명령어를 살펴보겠습니다.
pyautogui.mouseDown(x, y, button='left') # 버튼을 누르고 있음, x,y 입력시 드래그 기능 동일 pyautogui.mouseUp(x, y, button='left') # 버튼을 누르는 것을 해제하는 것임. (그닥 크게 의미는 없어요) # 단 위의 Down / up 을 별개로 사용가능하나 짝으로 사용 가능합니다. | cs |
키보드 관련 기능
키보드는 크게 키 값 입력하는 부분과 단축키 사용하는 부분 그리고 마우스의 Down/Up가 같이 버튼을 계속 누르는 기능이 있습니다. 먼저 키보드 타이핑 관련해서는 다음 명령어를 보고 각 인자값에 대해서 간단히 설명을 드리겠습니다.
pyautogui.typewrite(Data, interval=secs_between_keys)
Data | 키보드 입력하고자 하는 키보드 자판 지칭 |
interval | 각 문자 입력 타이핑 간격(초) |
그럼 다음을 살펴보겠습니다.
pyautogui.typewrite(['a', 'b', 'c', 'left', 'backspace', 'enter', 'f1'], interval=2) | cs |
위의 명령어는 'left', 'backspace', 'f1' 이 부분이 아니고, 키보드의 데이터를 의미합니다. 만약에 문자열을 입력하시고자 한다면 리스트 형태가 아닌 그냥 문자열을 Data에 입력해주시면 됩니다. 그럼, 인터벌 간격에 따라 한글자씩 입력합니다.
그럼 단축키를 입력하는 명령어를 한번 보겠습니다.
pyautogui.hotkey('ctrl', 'c') pyautogui.hotkey('ctrl', 'v') | cs |
위와 같이 hotkey()명령어를 이용해주시면 됩니다.
그럼 이제는 키보드를 누르고 있는 효과를 나타내는 명령어를 입력해보도록 하겠습니다.
pyautogui.keyDown(Key_Name) # 키보드를 누르고 있음 pyautogui.keyUp(Key_Name) # 키보드를 누르고 있는 것을 해제 # 단 위의 Down / up 을 별개로 사용가능하나 짝으로 사용 가능할 때 Up의 효과가 있을 듯 합니다. | cs |
메시지박스 기능
pyautogui.alert('알람.') pyautogui.confirm('확인') pyautogui.prompt('입력.') | cs |
alert을 경우 warning 메시지등과 같이 알림을 주기 위한 경우입니다. 다음과 같은 결과가 나옵니다.
confirm의 경우 yes/No등과 같이 사용자에게 확인을 요하는 경우에 사용이 됩니다.
prompt의 결과는 다음과 같이 사용자로 하여금, 텍스트들을 입력받는 경우에 사용됩니다.
스크린 샷 기능
화면 캡처 기능입니다.
pyautogui.screenshot() pyautogui.screenshot('foo.png') #파일 저장 | cs |
첫번째 명령어는 그냥 스크린 샷을 찍는 것고, 두번째 줄은 파일로 저장합니다.
이번 포스팅에서는 간단하게 PyAutoGui모듈에 대해서 (다 알아본것 같은데 누락될 수도 있습니다.) 간단히 알아봤습니다. 다음 포스팅에서는 이것을 활용해서 간단한 부분을 만들어볼까 합니다.
궁금하시거나, 문의 사항 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 부탁드립니다. 감사합니다.
'Python > Python 기본' 카테고리의 다른 글
파이썬[Python] deque - collections 모듈 (1) | 2020.04.08 |
---|---|
파이썬[Python] namedtuple - collections 모듈 (0) | 2020.04.02 |
파이썬[Python] Counter 함수 - collections 모듈 / 알파벳 사용빈도 확인 (0) | 2020.03.12 |
파이썬[Python] 012 클래스(Class) 및 상속 (0) | 2019.12.27 |
파이썬[Python] 011 예외처리(Exception) (0) | 2019.12.27 |