본문 바로가기
Python

pyinstaller로 실행파일 생성시 pyQt 윈도우 아이콘 적용

by holy season 2023. 6. 2.
반응형

문제점

pyinstaller의 옵션으로 -w -F --icon='icon'을 넣어서 실행파일을 생성하면 다른 컴퓨터나 아이콘의 경로가 바뀌었을 때 아이콘이 표시되지 않는 문제점이 나타났다.

해결 방법

아이콘 파일의 상대경로를 pyinstaller로 포함시켜도 찾아낼 수 있게 변환시켜주는 함수를 생성한다

이 함수를 이용해서 경로를 얻고 pyQt의 setWindowIcon 메서드를 사용해 아이콘을 적용한다.

아이콘을 적용할 때에는 QtGui에 QIcon을 사용해 적용한다.

pyinstaller로 포함시켜도 찾아낼 수 있게 변환시켜주는 함수

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
    return os.path.join(base_path, relative_path)

QIcon 생성

import sys
import os.path
from PySide6.QtGui import QIcon

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
    return os.path.join(base_path, relative_path)

""" 절대경로로 QIcon 가져오기 """
def getQIcon(imageIconPath):
    return QIcon(resource_path(imageIconPath))

적용

#아이콘 설정
icon = iconResource.getQIcon('이미지 경로')
self.setWindowIcon(icon)

pyinstaller 명령어

pyinstaller -w -F -i=["아이콘.ico"] --add-data=["아이콘 파일 위치;./아이콘이 저장되어 있는 폴더"] [exe파일로 만들 파일명.py] -n [실행파일명]

출처

https://pgh268400.tistory.com/378

 

[PyQT] pyinstaller로 윈도우 아이콘, UI, 프로그램 아이콘 전부 exe에 포함시키기

PyQT와 Qt Designer로 아이콘 및 UI를 다루는건 디버깅을 할땐 아무 문제가 되지 않습니다만 pyinstaller로 exe로 패키징 하는 과정에선 문제가 발생할 수 있습니다. UI와 아이콘 파일의 위치를 못찾는것

pgh268400.tistory.com

 

반응형

'Python' 카테고리의 다른 글

파이썬 playsound  (0) 2023.06.23
자료형 그대로 파일에 저장하기  (0) 2023.06.07
사용자 폴더 위치  (0) 2023.06.01
PySide6로 GUI 구성하기  (0) 2023.05.18
Python unittest 사용하기  (0) 2023.05.16