👨🏽‍💻

ch3 - 1. 마우스 및 키보드 조절하기

마우스 조절하기

Index

  1. Pyautogui 모듈 설치하기
  1. 마우스 움직이기
    1. 2.1 전체 화면 크기(모니터 해상도) 가져오기
      2.2 스크린샷 찍기
      2.3 마우스 위치 가져오기
      2.4 마우스 움직이기
      2.5 마우스 드래그하기
      2.6 마우스 클릭하기
      2.7 마우스 누르고 떼기
      2.8 마우스 스크롤하기
  1. 참고 사이트

마우스 조절하기

python을 이용하여 마우스를 조절하는 방법에 대해 알아보도록 하겠습니다.
 

1. Pyautogui 모듈 설치하기

Pyautogui 모듈을 이용하면 마우스 이동, 버튼 클릭 및 휠 스크롤을 시뮬레이션 할 수 있습니다.
os에 따라 설치법이 다른데,
  • Windows: 이미 설치가 되어 있습니다. 바로 다음으로 넘어가세요.
  • X(Mac os): 터미널에 들어가 아래의 명령어를 입력해주세요. sudo pip3 install pyobjc-framework-Quartz sudo pip3 install pyobjc-core sudo pip3 install pyobjc
  • Linux: 터미널에 들어가 아래의 명령어를 입력해주세요. sudo pip3 install python3-xlib sudo apt-get install scrot sudo apt-get install python3-tk sudo apt-get install python3-dev
 

2. 마우스 조절하기

이제 설치한 모듈을 이용해서 마우스를 조정해보도록 하겠습니다.
마우스 클릭 자동화 중, 강제 종료를 시키고 싶을 때 단축키는 ctrl + alt + del 입니다.
 

2.1 전체 화면 크기(모니터 해상도) 가져오기

pyautogui.size()를 이용하면 현재 화면의 크기를 가져올 수 있습니다.
#전체 화면 크기의 가로, 세로를 width, height에 넣습니다 width, height = pyautogui.size() # print('width={}, height={}'.format(width, height))
 

2.2 스크린샷 찍기

pyautogui.screenshot()을 이용하면 스크린샷을 가져와 저장할 수 있습니다.
인자에 따라 스크린샷 범위을 지정해줄 수 있습니다.
"""전체화면 스크린샷""" img1 = pyautogui.screenshot('pyautogui_img1.png') #'원하는 파일 이름.파일형식'을 입력해주세요 """부분화면 스크린샷""" #왼쪽위에서 오른쪽 아래로 스크린샷을 한다는 가정하에 #region = (왼쪽 위 x좌표, 왼쪽 위 y좌표, 오른쪽 아래 x좌표, 오른쪽 아래 y좌표) img2 = pyautogui.screenshot('pyautogui_img2.png', region = (300, 400, 500, 700))
 

2.3 마우스 위치 가져오기

마우스 움직이기 위해서는 먼저 마우스의 좌표를 알아야 합니다.
pyautogui.position()을 이용하면 마우스 커서의 x, y 위치를 튜플로 반환해줍니다.
pyautogui.position() #현재 마우스 커서의 가로,세로 위치를 x,y에 넣습니다 # print('x={}, y={}'.format(x, y))
 

2.4 마우스 움직이기

마우스는 크게 절대주소로 움직이기, 상대주소로 움직이기가 있습니다.
절대주소는 pyautogui.moveTo()를 이용하고
상대주소는 pyautogui.moveRel()를 이용합니다.
"""절대주소""" #전체 화면을 기준으로 움직이기 pyautogui.moveTo(100, 100, duration=0.25) pyautogui.moveTo(200, 100, duration=0.25) """상대주소""" #현재 마우스 커서 위치를 기준으로 움직이기 pyautogui.moveRel(100, 0, duration=0.25) pyautogui.moveRel(0, 100, duration=0.25)
 

2.5 마우스 드래그하기

pyautogui.dragTo()를 이용하면 원하는 곳으로 마우스를 드래그할 수 있습니다.
인자에 따라 마우스 왼쪽 또는 오른쪽 버튼을 누른 채 드래그할 수 있고, 지연 시간을 설정할 수 있습니다.
#현재 위치에서 x=100, y=100로 드래그 pyautogui.dragTo(x = 100, y = 100) #2초의 중간 지연 시간을 가지고 마우스의 현재 위치에서 x=100, y=100로 드래그 pyautogui.dragTo(x = 100, y = 100, duration = 2) #마우스 왼쪽 버튼을 누르고 드래그하기 pyautogui.dragTo(100, 200, button = 'left') #마우스 왼쪽 버튼을 누르고 드래그하기 pyautogui.dragTo(100, 200, button = 'left')
 

2.6 마우스 클릭하기

pyautogui.click()을 이용하면 마우스 왼쪽 클릭을 이용할 수 있습니다. 인자에 따라 특정좌표를 클릭하거나 오른쪽 클릭, 더블클릭을 할 수 있습니다.
pyautogui.mouseUp()과 pyautogui.mouseDown()을 이용하면 버튼을 누르고 떼는 동작 또한 가능
"""마우스 왼쪽 클릭하기""" #default pyautogui.click() #특정좌표 클릭하기 pyautogui.click(x = 100, y = 100) """마우스 오른쪽 클릭하기""" #방법1 pyautogui.click(button = 'right') #방법2 pyautogui.rightClick() """마우스 더블 클릭하기""" #방법1 pyautogui.click(clicks=2) #방법2 pyautogui.doubleClick() #시간 간격(interval)을 가지고 클릭하기 pyautogui.click(clicks=2, interval=1.5)
 

2.7 마우스 누르고 떼기

pyautogui.mouseDown(), pyautogui.mouseUp()을 사용하면
계속 누르거나 떼고 있는 동작을 구현할 수 있습니다.
"""마우스 왼쪽버튼""" #default pyautogui.mouseDown() pyautogui.mouseUp() #절대경로를 이용하여 원하는 지점에서 마우스 왼쪽버튼 누르고 떼기 pyautogui.mouseDown(x=100, y=250) pyautogui.mouseUp(x=100, y=250) """마우스 오른쪽버튼""" #default pyautogui.mouseDown(button='right') pyautogui.mouseUp(button='right') #절대경로를 이용하여 원하는 지점에서 마우스 오른쪽 버튼 누르고 떼기 pyautogui.mouseDown(button='right', x=100, y=250) pyautogui.mouseUp(button='right', x=100, y=250)
 

2.8 마우스 스크롤하기

마우스 가운데 버튼으로 스크롤하는 것도 가능합니다. pyautogui.scroll()을 통해 위아래 또는 좌우로 스크롤을 할 수 있습니다.
#위로 pyautogui.scroll(-100) #아래로 pyautogui.scroll(100) #우측으로 pyautogui.hscroll(10) #좌측으로 pyautogui.hscroll(-10) #마우스 커서를 특정 위치로 이동시킨 후 스크롤 하기 pyautogui.scroll(100, x=100, y=100)
 

키보드 조절하기

# 특정 문자열 입력하기 pyautogui.typewrite('Hello!') # 특정 문자열 안정적으로 입력하기 time.sleep(5) pyautogui.typewrite('Hello!', interval=0.25) # 한글 입력은 안 된다고 함 # 클립보드에 내용을 저장하고 복붙하는 기능을 생각해 볼 수 있겠음 pyautogui.typewrite('역시 한국어가 세계공통어가 됐어야....')
# 문자열 입력하고 엔터 입력하기 pyautogui.typewirte('Hello!') pyautogui.press('enter')
# 여러 키 연속으로 입력하기 pyautogui.press(['backspace', 'enter'])
# 조합 키 입력하기 (쉬프트 누르고 왼쪽으로 한 칸 선택한 후, 쉬프트 떼기) pyautogui.typewrite('Hello') pyautogui.keyDown('shift') pyautogui.press('left') pyautogui.keyUp('shift')
# Ctrl + C pyautogui.hotkey('ctrl', 'c') # Ctrl + V pyautogui.hotkey('ctrl', 'v')