본문으로 건너뛰기
Minsing Log
뒤로 가기

pyimage1 doesn't exist error

Programming & CS

문제 요약:


🔎 원인 분석

  1. pyimage1 doesn’t exist 에러는 Tkinter 이미지 객체가 생성되었는데, mainloop 중간에 소멸되어 Tkinter가 그걸 참조할 수 없게 되는 대표적인 에러입니다.

    • 이는 PhotoImage나 Label 등에 설정된 이미지가 local variable로 만들어지고, 참조 없이 사라질 때 발생합니다.
    • GUI에서 이미지 보여줄 때 self.image = tk.PhotoImage(...)처럼 인스턴스 변수로 유지해야 합니다.
  2. PostgreSQL이 동작하지 않는 것처럼 보이는 이유

    • 실제로 연결은 되었고 로그도 출력되지만, GUI 창이 뜨기 전에 mainloop()가 잘못 종료되어 DB 동작까지 마무리되지 않을 수 있습니다.
    • 특히 GUI 내부에서 발생한 예외나 잘못된 흐름으로 인해 mainloop()가 조기 종료되면 이후 코드가 실행되지 않을 수 있습니다.

🛠 해결 방법

✅ 2. tk.Tk()를 MainThreadExecutor의 root가 아닌 AutoComplete에서 다시 생성해서 충돌 가능성

MainThreadExecutor는 self.root.mainloop()로 메인 이벤트 루프를 이미 돌리고 있습니다. 그런데 AutoComplete.display_meme_gui()에서 다시 tk.Tk()를 호출하는 건 중복 Tk root 생성으로 비정상 동작의 원인이 됩니다.

해결책: AutoComplete에서는 새 Tk()를 만들지 말고 Toplevel()으로 만들어야 합니다.

self.root = tk.Toplevel()

✅ 정리된 체크리스트


🔚 결론

코드 구조상 동작은 맞지만, Tkinter의 이미지 관리, 중복 Tk() 루트 생성, 그리고 DB 연결의 암시적 종료 시점이 문제를 일으키고 있습니다.

위 3가지를 고치면 main.py에서도 정상적으로 autocomplete()과 DB 조회가 작동할 것입니다. 원하시면 MemeSelectionGUI 쪽 예시 코드까지 보여드릴게요.


깨달음

역시 알기 위해서는 수단과 방법을 가리지 말아야한다. perplexity가 못한걸 chatgpt가 해냈다. 그리고 알기 위해서는 pyimage2 error로 검색했으면 알았을것이다.

공개 여정 구독

글이 올라오면 이메일로 보내드릴게요.

개발, 창업, 배움, 실패와 회고를 짧고 솔직하게 기록합니다. 검색으로 스쳐가는 독자가 아니라 여정을 따라오는 팬을 만들기 위한 뉴스레터입니다.

뉴스레터는 준비 중입니다. 그동안 RSS 로 구독하거나 이메일 로 알림을 요청해 주세요.


이 글 공유하기:

댓글

GitHub 계정으로 로그인해 댓글을 남길 수 있습니다.


이전 글
HalluLens 논문리뷰
다음 글
What is daemon?