10기 4주차 pyautogui 과제

#10기4주차pyautogui과제

과제 설명

목표: 화면에 표시된 특정 아이콘(예: 홈 버튼)을 자동으로 찾아 클릭하는 프로그램을 만드세요.

요구 사항:

  1. PyAutoGUI와 Pillow 라이브러리를 사용합니다.

  2. 아이콘의 스크린샷을 'icon.png'로 저장하고, 이 이미지를 화면에서 찾아서 클릭하세요.

  3. 프로그램이 아이콘을 찾지 못했을 때, 적절한 메시지를 출력하세요.

  4. 프로그램이 실행되기 전에 사용자에게 준비 시간을 주세요 (예: 5초).

샘플 코드

pythonCopy code
import pyautogui
import time

# 사용자가 준비할 시간을 줍니다.
print("5초 후에 프로그램이 시작됩니다.")
time.sleep(5)

# 화면에서 아이콘을 찾습니다.
location = pyautogui.locateOnScreen('icon.png')

if location:
    # 아이콘의 중심으로 마우스를 이동합니다.
    center = pyautogui.center(location)
    pyautogui.moveTo(center)

    # 마우스 클릭을 실행합니다.
    pyautogui.click()
    print("아이콘이 클릭되었습니다!")
else:
    print("아이콘을 찾을 수 없습니다. 'icon.png' 파일을 확인하세요.")

과제 팁

  1. 이미지 캡처: 화면에서 원하는 아이콘의 이미지를 캡처하려면, 컴퓨터의 스크린샷 기능을 사용하세요. 그리고 'icon.png'로 저장합니다.

  2. 코드 테스트: 코드를 실행하기 전에 'icon.png' 파일이 프로젝트 폴더 내에 올바르게 위치해 있는지 확인하세요.

  3. 오류 확인: 코드를 실행할 때 오류가 발생하면, 에러 메시지를 읽고 어떤 부분이 잘못되었는지 파악해 보세요. 대부분의 오류는 파일 경로 문제나 라이브러리 미설치에서 발생합니다.




이렇게 다 떠먹여주셔서…

이번 과제가 역대급으로 간단했고 우여곡절이 없었다.. 싶습니다.’

주실 때도 어려움을 아시고 처음부터 간단한 거 주신 거 같은데욤 ㅎ

뒤늦게 부랴부랴 해야해서 걱정했는데 다행히 딸깍만 하면돼서 ㅎㅎ

강의시간 때처럼 이미지가 잘 안먹어서

한 번에 이미지를 인식 못해서 아래와 같이 GPT에게 물었었고요.

(사실은 오류가 뭘 뜻하는지도 몰랐어서 물어본 게 크긴한데 강의보면서 하니까

끄덕끄덕했습니다 ㅎ,.ㅎ)


그래서 암튼 이렇게 물어봤었고

During handling of the above exception, another exception occurred: Traceback (most recent call last): File "c:\Users\A-josh\Desktop\Gpters\pyautoGUIprac.py", line 9, in <module> location = pyautogui.locateOnScreen('news.png') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\A-josh\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyautogui\__init__.py", line 174, in wrapper raise ImageNotFoundException # Raise PyAutoGUI's ImageNotFoundException. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pyautogui.ImageNotFoundException --- 이렇게 오류가 나는데 뭐가 문제인지, 어떻게 해결해야 하는지 알려줘

ChatGPT

ChatGPT

해당 오류는 pyautogui.locateOnScreen() 메서드가 지정된 이미지를 찾지 못할 때 발생합니다. 이 문제를 해결하기 위해 몇 가지 단계를 따를 수 있습니다:

  1. 이미지 경로 확인: 먼저 locateOnScreen() 메서드에 전달된 이미지 파일이 올바른 경로에 있는지 확인하세요. 오류 메시지에서 'news.png'라는 이미지를 찾을 수 없다고 나와있는데, 해당 이미지가 프로젝트 디렉토리에 있는지 확인하세요.

  2. 이미지 검색 조건 조정: 때로는 정확한 이미지를 찾지 못할 수 있습니다. locateOnScreen() 메서드에는 몇 가지 옵션을 추가하여 이미지 검색을 더욱 정확하게 할 수 있습니다. 예를 들어, confidence 매개변수를 조정하여 이미지 일치의 정확도를 변경할 수 있습니다.

  3. 이미지의 크기 또는 해상도 확인: 이미지가 화면에서 너무 작거나 너무 크면 인식에 문제가 발생할 수 있습니다. 이미지의 크기를 조정하여 다시 시도해 보세요.

  4. PyAutoGUI 버전 확인: 가끔씩 오래된 PyAutoGUI 버전에서는 이미지 인식에 문제가 발생할 수 있습니다. 최신 버전을 설치하고 다시 시도해 보세요.

  5. 이미지 자체 수정: 이미지의 밝기, 대조 또는 색상을 수정하여 인식률을 높일 수 있습니다.

이러한 단계를 따라도 문제가 해결되지 않으면 추가적인 디버깅이 필요할 수 있습니다.

류정

You

Traceback (most recent call last): File "c:\Users\A-josh\Desktop\Gpters\pyautoGUIprac.py", line 9, in <module> location = pyautogui.locateOnScreen('hondaad.jpg') ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\A-josh\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyautogui\__init__.py", line 172, in wrapper return wrappedFunction(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\A-josh\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyautogui\__init__.py", line 210, in locateOnScreen return pyscreeze.locateOnScreen(*args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\A-josh\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyscreeze\__init__.py", line 405, in locateOnScreen retVal = locate(image, screenshotIm, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\A-josh\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyscreeze\__init__.py", line 383, in locate points = tuple(locateAll(needleImage, haystackImage, **kwargs)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\A-josh\AppData\Local\Programs\Python\Python312\Lib\site-packages\pyscreeze\__init__.py", line 282, in locateAllpillow needleFileObj = open(needleImage, 'rb') ^^^^^^^^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: 'hondaad.jpg' --- 다른 이미지로 교체해봤는데 이번엔 이렇게 오류가 났어 뭐가 문제인지, 해결방법은 뭔지 알려줄래?

ChatGPT

ChatGPT

이번에도 마찬가지로 이미지 파일을 찾을 수 없어서 오류가 발생했습니다. 에러 메시지에서는 'hondaad.jpg'라는 파일을 찾을 수 없다고 나와 있습니다.

해결책으로는 다음과 같은 단계를 따를 수 있습니다:

  1. 이미지 경로 확인: 먼저 hondaad.jpg 파일이 실제로 지정된 경로에 있는지 확인하세요. 파일 이름 및 경로가 정확한지 다시 한 번 확인하십시오.

  2. 파일 확장자 확인: 파일 이름이 '.jpg'로 끝나므로 해당 파일이 JPEG 형식의 이미지인지 확인하세요. 파일이 적절한 이미지 형식인지 확인하세요.

  3. 파일명 대소문자 구분 확인: 파일 시스템이 대소문자를 구분하는 경우가 있으므로 파일명이 정확하게 일치하는지 확인하세요.

  4. 이미지 파일을 로드할 수 있는 권한 확인: 프로그램이 이미지 파일을 로드할 수 있는 권한이 있는지 확인하세요. 때로는 파일 또는 디렉토리의 권한 문제로 인해 파일을 읽을 수 없는 경우가 있습니다.

  5. 파일이 다른 폴더에 있는 경우 경로 수정: 이미지 파일이 프로젝트 디렉토리가 아닌 다른 곳에 있는 경우 전체 경로를 제공하거나 올바른 상대 경로를 사용하여 파일을 지정하세요.

위의 단계를 따라 해결되지 않으면 추가적인 디버깅이 필요할 수 있습니다.


결국에 이미지가 분명하고? 선명하고 심플한 게 좋겠다 생각해서 그냥 로그인 이미지 넣어서

과제는 ‘딸깍’ 수행해 봤습니다.

혹시나 시간 안에 못할까봐 걱정했는데 저 같은 왕초보에게 효능감을 주셔서 감사합니다ㅋ

그동안 못 따라가고 있어서 나름의 맘고생이 ㄷㄷ

다른 것도 벌여 논 게 있어 가지구 그것도 하고 이것도 하고 할려니 아무튼 그랬습니다.

그럼에도 킵고잉님이나 쿠리님 대단하시고 다른 겨울님이나 다른 분들도 대단하시고

그랬습니다.


제가 카톡이나 이런 걸 잘 확인을 못해서 멀티가 안되고 ㅎㅎ

치려니 지났더라구요 타이밍이 약간

목표인 웹페이지를 html로 문구 2개 출력해보고 끝난상태지만 아무튼 감사했습니다.

10기 캠프를 잘 활용하지 못한 것이 못내 아쉽기도 하고요.

결과물이나 성과도는 낮았어도 나름 으샤으샤 했는데요

(못하시는 분들도 계셔 주셔서 좋았습니다 ㅋㅋ 실패담과 공감.. 정말입니다. 잘하시는 분들도 계셔서 좋았습니다. 배울게 있었고요.)

아무튼 이번 과제는 딸깍해서 끝냈습니다.

감사합니다. 이따 수업시간 때 여러분들의 성과를 또 볼 수 있겠네요.



import pyautogui

import time


# 사용자가 준비할 시간을 줍니다.print("5초 후에 프로그램이 시작됩니다.")time.sleep(5)
# 화면에서 아이콘을 찾습니다.location = pyautogui.locateOnScreen('naverlogin.png')
if location:    # 아이콘의 중심으로 마우스를 이동합니다.    center = pyautogui.center(location)    pyautogui.moveTo(center)
    # 마우스 클릭을 실행합니다.    pyautogui.click()    print("아이콘이 클릭되었습니다!")else:    print("아이콘을 찾을 수 없습니다. 'icon.png' 파일을 확인하세요.")

1
2개의 답글

👉 이 게시글도 읽어보세요