티스토리 뷰

반응형

 

모든 강의 자료 : www.codingnow.co.kr/

 

코딩나우

프로그래밍 교육및 개발의뢰 받습니다.

www.codingnow.co.kr

 

 

https://youtu.be/Q4cC5xG2ZbI?si=sJkmILpveluldefb

 

 

 

 

 

파이썬의 pyautogui를 사용하여 사무자동화 프로그래밍을 해봅니다.

pyautogui는 마우스와 키보드를 제어할 수 있게 해주며,

이미지를 이용해 이미지의 위치(좌표)를 찾을 수 있는 기능도 있습니다.

 

여기서는 파이썬의 pyautogui를 사용하여

10초 주기로 메모장의 위치를 자동으로 찾고

마우스를 이동하여 더블클릭하여 실행합니다.

그리고 리스트로 저장된 영어 명언을 순차적으로 입력하고 저장합니다.

 

자세한 설명은 첨부된 동영상을 참고해주세요.

 

영어명언.txt
0.00MB

[강의 소스코드]

import pyautogui
import time

# while True:
#     print(pyautogui.position())

# pyautogui.moveTo(257,535, duration=1)

strs = [
    'No great man ever complains of want of opportunity.',
    # 위대한 사람은 기회가 없다고 원망하지 않는다.
    'Do not accustom yourself to use big words for little matters.',
    #작은 일에 거창한 말을 사용하는 습관을 피해라.
    'A day without laughter is a day wasted.',
    # 웃음 없는 하루는 낭비한 하루다.
]

length = len(strs)

count = 0
timePre = time.time()
timeElapsedPre = 0
while count < length:
    # print(int(time.time() - timePre))
    timeElapsed = int(time.time() - timePre)

    if timeElapsed >= 3:
        # print("10초")
        poi = pyautogui.locateCenterOnScreen('test.png',confidence=0.8)
        if poi != None:
            pyautogui.doubleClick(poi, duration=0.5)
            # pyautogui.doubleClick(257, 535, duration=0.5)
            time.sleep(1)
            pyautogui.typewrite(['enter'])
            pyautogui.typewrite(f'{count}. {strs[count]}', interval=0.1)
            pyautogui.hotkey('alt','f')
            pyautogui.typewrite(['down','down','down','enter'],interval=0.1)


            pyautogui.hotkey('alt', 'f')
            pyautogui.typewrite(['down', 'down', 'down', 'down',
                                 'down', 'down', 'down', 'enter'], interval=0.1)
            count += 1
        timePre = time.time()
    else:
        if timeElapsed != timeElapsedPre:
            print(timeElapsed,'초')
            timeElapsedPre = timeElapsed



[코드 정리 및 확장한 코드]

 

import pyautogui
import time

count = 0
strs = [
    'No great man ever complains of want of opportunity.',
    # 위대한 사람은 기회가 없다고 원망하지 않는다.
    'Do not accustom yourself to use big words for little matters.',
    #작은 일에 거창한 말을 사용하는 습관을 피해라.
    'A day without laughter is a day wasted.',
    # 웃음 없는 하루는 낭비한 하루다.
    "Patterning your life around other's opinions is nothing more than slavery.",
    # 다른 사람의 생각에 인생을 맞춰가는 것은 노예나 다름없다.
    "love what you have.",
    # 당신이 가진 것을 사랑하라.
    "It ain't over till it's over.",
    # 끝날 때까지는 끝난 게 아니다.
    "Life is not fair, get used to it.",
    # 인생이란 결코 공평하지 않다. 이 사실에 익숙해져라.
    "Only I can change my life, No one can do it for me.",
    # 나만이 내 인생을 바꿀 수 있다. 아무도 날 대신해 줄 수 없다.
    "The unexamined life is not worth living.",
    # 반성하지 않은 삶은 살 가치가 없다.
    "Life is a tragedy when seen in close-up, but a comedy in long shot.",
    # 인생은 가까이서 보면 비극이지만 멀리서 보면 희극이다.
    "Do not be afraid to give up the good to go for the great.",
    # 더 좋은 것을 쫓기 위해 좋은 것을 버리는 것을 두려워하지 마라.
    "Better the last smile than the first laughter.",
    # 처음의 큰 웃음보다 마지막의 미소가 더 좋다.
    "No pain no gain.",
    # 고통없이는 얻는 것도 없다.
    "Habit is second nature.",
    # 습관은 제 2의 천성이다.
    "We can give advice, but we cannot give conduct.",
    # 충고는 해 줄 수 있으나, 행동하게 할 수는 없다.
    "Success doesn't come overnight.",
    # 성공은 하룻밤 사이에 오지 않는다.
    "Better late than never.",
    # 아예 안하는 것보단 늦게라도 하는 게 낫다.
    "Who dares, wins.",
    # 도전하는 자가 승리한다.
    "Slow and steady win the race.",
    # 천천히 그리고 꾸준히 하면 경주에서 승리한다.
    "Rome is not built in a day.",
    # 로마는 하루아침에 만들어지는 것이 아니다.
]

def writeNotePad():
    global count
    pyautogui.typewrite(f'{count+1}. {strs[count]}', interval=0.1)
#save
    time.sleep(1)
    pyautogui.keyDown('alt')
    pyautogui.typewrite(['f'])
    pyautogui.keyUp('alt')
    pyautogui.typewrite(['down','down', 'down'],interval=0.1)
    pyautogui.typewrite(['enter'])
#exit
    time.sleep(1)
    pyautogui.keyDown('alt')
    pyautogui.typewrite(['f'])
    pyautogui.keyUp('alt')
    pyautogui.typewrite(['down', 'down', 'down', 'down',
                         'down', 'down', 'down'], interval=0.1)
    pyautogui.typewrite(['enter'])
#alt + f4
    # pyautogui.keyDown('alt')
    # pyautogui.typewrite(['f4'])
    # pyautogui.keyUp('alt')
    # time.sleep(1)
    # pyautogui.typewrite(['enter'])
    count += 1

def findIcon(path):
    find = pyautogui.locateCenterOnScreen(path, confidence=0.8)  # 좌표 검색
    if find != None:
        # print(find, end=' ')
        pyautogui.moveTo(find, duration=0.1)  # 좌표로 마우스 이동
        pyautogui.doubleClick()  # 클릭
        time.sleep(1)
        pyautogui.typewrite(['enter', 'up'], interval=0.1)
        time.sleep(1)
        writeNotePad()

# print(pyautogui.position())
timePre = time.time()
timeElapsedPre = 0
while count < len(strs):
    timeElapsed = int(time.time() - timePre)

    if timeElapsed >= 10:
        findIcon("test.png")
        timePre = time.time()
    else:
        if timeElapsed != timeElapsedPre:
            print(timeElapsed, '초')
            timeElapsedPre = timeElapsed
반응형