PyQt5 모듈을 사용하면 Python으로 간단하게 GUI 프로그램을 개발할 수 있다.
하지만 PyQt5 Designer로 만든 UI를 개발한 프로그램에서 읽어올 수 없다는 에러가 발생할 수 있다.
파이참에서는 잘 작동되지만, pyinstaller로 exe 실행파일을 생성하고, 생성된 실행파일을 실행시켜보면 UI를 불러올 수 없다는 에러가 뜨면서
정상적으로 작동하지 않는다.
아래는 내가 만들어본 간단한 test용도의 코드인데, 아래처럼 ui를 불러와주는 코드를 포함시킨다.
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
form_class, QtBaseClass = uic.loadUiType(BASE_DIR + r'\UI명.ui')
class MyWindow(QMainWindow, form_class):
def __init__(self):
super().__init__()
self.setupUi(self)
.
.
.
if __name__=="__main__":
app = QApplication(sys.argv)
myWindow = MyWindow()
myWindow.show()
app.exec_()
pyinstaller -w -F 파일명.py
그러면 파일명.spec
이 생성되는데 이 파일을 열어 아래 형광펜 친 부분을 추가 및 수정해주면 된다. 불러올 ui가 여러 개라면 아래와 같이 계속 추가 할 수 있다.
ui = [('ui명.ui', '.'), ('ui명2.ui', '.')]
.
.
datas =ui
혹은
datas = [('ui명.ui', '.'), ('ui명2.ui', '.')]
으로 변경해주면 된다.
내 test 파일의 .spec은 다음과 같이 설정했다.
그 후 마지막으로 다시 터미널에서
pyinstaller 파일명.spec
하면 UI를 포함시킨 exe 실행파일을 정상적으로 만들 수 있다.