티스토리 뷰

왜 MS의 visual programming에 흥미를 느끼지 못해 이 개고생인가 싶다.

두 줄 요약

  1. PyQt5의 QIcon을 사용하는 중 갑자기 이미지 파일이 정상적으로 출력되지 않는다면,
  2. 자신의 개발 환경의 Path를 점검해 보자. 이게 귀찮거나 가능하지 않다면,
  3. 소스 코드에 이미지 파일의 절대 경로를 입력하자.

PyQt 예제를 연습하는 중에 갑자기 문제가 발생했다. 문제 상황은 간단하다.

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp
from PyQt5.QtGui import QIcon

# 생략

    def initU(self):

        exitAction = QAction(QIcon("/Users/dexion/PycharmProjects/TestPyQt5/exit.png"), "Exit", self)
        # exitAction = QAction(QIcon("exit.png"), "Exit", self)

        exitAction.setShortcut("Ctrl+Q")
        exitAction.setStatusTip("Exit Apllication")
        exitAction.triggered.connect(qApp.quit)

소스코드는 위와 같다. 분명히 정상적으로 작동되던 코드였는데 코드를 실행하면 윈도우 화면에서 아이콘 이미지 파일(exit.png)가 출력되지 않는 것이다!

정상적인 윈도우

이렇게 툴바의 왼쪽 안에 exit.png가 출력되어야 하고 정상적으로 출력이 되던 소스였다. 그런데 이럴 수가.

비정상적인 윈도우

갑자기 exit.png가 화면에서 사라져 툴바 프레임 안이 텅 비어 있는 것이다. 하지만 보이는 것처럼 텅 빈 것은 아니었다. 해당 부분을 클릭을 하면. triggerd.connect로 연결된 종료 메서드가 실행된다. 즉 이미지만 화면에 출력되지 않은 것이다.

기억을 되짚어 봤더니 개발환경상 바뀐 것이라고는 brew를 이용해 PyQt5를 설치한 것뿐이었다. 그 후 터미널에서 소스코드를 실행하면 아이콘이 출력되지 않고 해당 소스를 Pycham에서 불러와 실행하면 아이콘이 정상적으로 출력되었다. 처음에는 PyQt 버전상에서 QtGui.QIcon의 사용법이 바뀌었나 의심했다. 그러나 구글링을 통해서는 관련 내용을 확인할 수 없었다. 소스 문제도 아니고 PyQt5의 변경도 앲었다면 결국 내 시스템, 보다 좁힌다면 개발환경의 Path 문제일 가능성이 높아졌다. 터미널에서 실행될 때의 path와 파이참을 통한 가상 환경의 path가 달라 실행 결과에서 차이가 발생하는 것일 테니 말이다.
현재로서는 근본적은 해결책을 찾을 능력과 여력도 있지 않았다. 문제의 근본적인 해결보다는 대증 요법을 위한 잔머리를 굴렸다. 문제가 path라면 사용하고자 하는 파일의 절대 경로를 직접 입력해주면 해결되지 않을까? 역시 사용자 친화적인 파이썬은 파일 이름의 문자열을 받는 곳에서는 path 문자열까지 처리할 수 있었다.

        exitAction = QAction(QIcon("/Users/dexion/PycharmProjects/TestPyQt5/exit.png"), "Exit", self)
        # exitAction = QAction(QIcon("exit.png"), "Exit", self)

주석 처리된 기존 코드를 /Users/dexion/PycharmProjects/TestPyQt5/exit.png로 수정하자 예전대로 아이콘 이미지가 정상적으로 출력되었다. 대증 요법이지만 효과가 있어 안도의 한숨을 내쉬고 다음 학습으로 넘어갈 준비를 한다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함
11-25 22:18