본문 바로가기

Python/Python_지식_정리

pyautogui를 이용하여 키보드, 마우스 제어하기

pyautogui Docs 링크

 

Welcome to PyAutoGUI’s documentation! — PyAutoGUI documentation

Welcome to PyAutoGUI’s documentation! PyAutoGUI lets your Python scripts control the mouse and keyboard to automate interactions with other applications. The API is designed to be as simple. PyAutoGUI works on Windows, macOS, and Linux, and runs on Pytho

pyautogui.readthedocs.io

파이썬의 라이브러리로써 코드를 통해서 키보드와 마우스를 제어할 수 있다.

이른 바 '매크로'도 이런 류의 라이브러리를 사용하여 만들텐데 오로지 연구, 공부 목적으로 사용하고 악용하는 일은 없도록 해야한다.

작성자 기준으로 유용하게, 자주 쓸 거 같은 코드들만 게시하였기에 자세한건 docs문서를 참고하면 된다.


pyautogui는 pip를 이용하여 설치한 후 사용하면 되는데 사진을 읽어오는 함수가 있으면 opencv-python 도 함께 설치해야 사용 가능하기 때문에 이것 또한 같이 설치해준다.

pip3 install pyautogui
pip3 install opencv-python

 

import pyautogui

# 현재 사용 중인 모니터의 가로, 세로길이를 픽셀 단위를 기준으로 변수에 저장한다.
MoniterW, MoniterH = pyautogui.size()

# 현재 마우스의 x좌표와 y좌표를 변수에 저장한다.
currentmouseX, currentmouseY = pyautogui.position()

# 마우스 커서를 화면의 400, 400에 위치시킨다.
pyautogui.moveTo(400, 400)

# 현재 마우스 커서 위치에서 우측으로 200, 상단으로 200을 3초안에 이동한다.
# duration값이 없으면 default로 커서가 순간이동을 하듯이 이동한다.
pyautogui.move(200, 200, duration=3)

# 마우스를 한번 클릭한다.
pyautogui.click()
# 마우스를 더블클릭 한다.
pyautogui.doubleClick()
# 현재 화면에 Window.png 사진과 똑같이 생긴 곳으로 가서 클릭한다.
pyautogui.click('Window.png')

# luden0 Blog를 각 글자마다 0.2초 간격으로 작성한다.
# interval를 없애면 문장이 순식간에 완성된다.
pyautogui.write('luden0 Blog', interval=0.2)

# 키보드의 엔터를 한번 누른다.
pyautogui.press('enter')
# 키보드의 엔터를 4번 누른다.
pyautogui.press(['enter','enter','enter','enter'])

# 키보드의 쉬프트를 누르고 유지한다.
pyautogui.keyDown('shift')
# 키보드의 쉬프트를 뗀다.
pyautogui.keyUp('shift')

# Ctrl + C(복사) 단축키를 사용한다.
pyautogui.hotkey('ctrl', 'c')

픽셀단위 모니터 가로 세로 길이
import pyautogui

MoniterW, MoniterH = pyautogui.size()
print(MoniterW, MoniterH)

(실행결과)

변수로 저장된 가로 세로 길이를 print로 출력한 결과

현재 마우스 커서의 좌표 표시
import pyautogui

currentmouseX, currentmouseY = pyautogui.position()
print(currentmouseX, currentmouseY)

(실행결과)

마우스 위치에 따라 값이 바뀜

(응용)

import pyautogui

while(1):
    currentmouseX, currentmouseY = pyautogui.position()
    print(currentmouseX, currentmouseY)

(실행결과)

움직일때마다 마우스 커서 위치가 나온다

마우스 커서를 원하는 좌표로 이동
import pyautogui
import time

pyautogui.moveTo(1260, 164)
time.sleep(1)
pyautogui.moveTo(1400, 304)

(실행결과)

지정한 좌표로 마우스가 이동한다

현재 마우스 위치로부터 x,y만큼의 이동
import pyautogui

pyautogui.move(100, 100, duration=2)
pyautogui.move(-100, -100, duration=1)
pyautogui.move(100, 100, duration=0.5)

(실행결과)

현재 마우스 위치를 기준으로 x, y픽셀 만큼 움직인다

마우스 클릭
import pyautogui
import time

#Hello pyautogui 폴더의 좌표
pyautogui.moveTo(795, 239)
pyautogui.click()

time.sleep(1)

pyautogui.move(0, 90, duration=0.5)
pyautogui.doubleClick()

(실행결과)

앞서 보인 move와 moveTo를 이용해 첫번째 폴더는 한번 클릭, 두번째 폴더는 더블클릭하였다

원하는 사진이 있는 위치로 가서 클릭
import pyautogui

pyautogui.click('lol.png')

 

사용된 사진 

(실행결과)

화면에 사진과 일치하는 부분으로 이동해서 클릭한다

원하는 문장을 자동으로 입력해준다
import pyautogui

pyautogui.click()
pyautogui.write('luden0 Blog ', interval=0.2)
pyautogui.write('Hello pyautogui', interval=0.1)

(실행결과)

키보드 입력을 받을 곳에 클릭을 하고 원하는 글이 작성이 된다

키보드 제어를 통해 키보드에 있는 기능들 사용
import pyautogui

pyautogui.click()
pyautogui.press('tab')
pyautogui.press(['.','space','pgup','down'])

(실행결과)

키보드에 있는 모든 키들을 저렇게 입력이 가능해진다

너무 빨라서 그렇지 정상 작동한 것이다.

키보드의 키를 누른 상태로 유지, 떼기
import pyautogui

pyautogui.click()

pyautogui.keyDown('shift')
pyautogui.press('a')
pyautogui.keyUp('shift')
pyautogui.press('a')

(실행결과)

shift키가 눌린 상태에서는 대문자로, 떼진 상태에서는 소문자로 나온다

단축키 사용
import pyautogui
import time

pyautogui.click()
pyautogui.hotkey('ctrl', 'shift', 'e')
time.sleep(0.5)
pyautogui.hotkey('ctrl', 'shift', 'f')

(실행결과)

단축키를 설정하면 그에 해당하는 동작이 실행된다

pyautogui에서 정의한 키보드 버튼의 이름은 여기 에 정리되어 있다.

'Python > Python_지식_정리' 카테고리의 다른 글

[Python] VScode에서 파이썬 사용  (0) 2019.11.12