[SK shieldus Rookies 16기][Python] GUI자동화

Jina·2023년 11월 6일
0

SK shieldus Rookies 16기

목록 보기
7/59
post-thumbnail
post-custom-banner

subprocess

  • 서브 프로세스 관리 모듈
    • 서브프로세스? 메인 프로그램(메인 프로세스)에서 다른 프로그램이나 명령어를 실행하는 것
    • 메인프로세스? 프로그램이 실행될 때 가장 처음 실행되는 프로세스
      사용자로부터 입력을 받거나 데이터를 처리하고, 다른 모듈이나 함수를 호출하는 것! 프로그램의 진입점(entry point)이라고도 부름
  • subprocess 모듈이 등장하기 전 사용한 모듈 ⇒ os.system os.spawn*

예제) 윈도우 계산기 실행

import subprocess,time

subprocess.Popen() # 시스템 명령을 백그라운드 프로세스로 실행
cal = subprocess.Popen('C:\\Windows\\System32\\calc.exe')

pyautogui

마우스와 키보드를 제어하기 위해서는 pyautogui 라이브러리를 설치해야한다.

설치

pip install pyautogui

예제) 마우스 제어

import pyautogui

# 마우스 위치는 모니터 좌측 상단 꼭지점부터 시작(0,0) 오른쪽으로 갈수록 값 증가
# position() 현재 마우스 위치 출력 
print(pyautogui.position()) # Point(x=-2325, y=659)

# size() 현재 메인 모니터의 크기 출력 
print(pyautogui.size()) # Point(x=-2325, y=659)

# moveTo() 위치 이동
# pyautogui.moveTo(x,y)
pyautogui.moveTo(1559,29)

# click() 마우스 클릭
pyautogui.click()

# moveTo() + Click() 특정 좌표에서 마우스 클릭
pyautogui.click(1559,29) 
# click(x,y, button='left|middle|right')

# click()과 동일하게 좌표 설정도 가능
# 마우스 왼쪽 클릭
pyautogui.leftClick()

# 마우스 가운데 클릭
pyautogui.middleClick()

# 마우스 오른쪽 클릭
pyautogui.rightClick()

예제) 메모장에 글자 복붙하기

import clipboard # pip install clipboard
import pyautogui
import time

memo = '''
    clipboard test
    Hello!
'''

# 클립보드에 복사
cpy = clipboard.copy(memo)

pyautogui.hotkey('win','r') # 단축키 실행 hotkey('키 이름','키 이름')
pyautogui.write('notepad.exe') # 텍스트 입력 write('입력할 내용')

time.sleep(3) # 메모장이 열리는 시간이 있기 때문에 대기시간 3초 부여

pyautogui.press('enter') # 키보드에서 누를 키 press('키 이름')
pyautogui.hotkey('ctrl','v')

예제) 그림판 열어서 그림 그려보기

pyautogui.hotkey('win','r')
pyautogui.write('mspaint.exe')
pyautogui.press('enter')

time.sleep(3)

distance = 300
change = 20

while distance > 0:
    pyautogui.drag(distance, 0 , duration=0.2)
    distance = distance - change
    pyautogui.drag(0, distance, duration=0.2)
    pyautogui.drag(-distance, 0, duration=0.2)
    distance = distance - change
    pyautogui.drag(0, -distance, duration=0.2)
    distance = distance - change

예제) 윈도우 창 정보

# 현재 활성화된 창 정보
active_win = pyautogui.getActiveWindow()
print(active_win)
# <Win32Window left="-3211", top="-11", width="3223", height="1785", title="● subprocess.ipynb - python_project - Visual Studio Code">
print(active_win.title)

# 켜져있는 모든 윈도우창 정보 가져오기
for win in pyautogui.getAllWindows():
    print(win.title)
    
# 특정 윈도우창 찾기
print(pyautogui.getWindowsWithTitle('그림판')[0])
profile
공부 기록
post-custom-banner

0개의 댓글