PyQt5를 이용하여 어플리케이션을 개발할때 화면은 당연히 QtDesigner를 통해 만들게 됩니다.
QtDesigner는 PyQt5 패키지를 설치하면 같이 설치됩니다.
designer.exe로 검색하시면 찾을 수 있을겁니다.
Qt Designer |
QtDesigner를 통해 만들어진 ui 파일을 프로그램에 적용하는 방법은 먼저 ui 파일을 ui 컴파일러를 통하여 Python 코드로 변환합니다.
pyuic5 XXX.ui -o XXX_UI.py
1. Qt Designer에서 다이얼로그 생성 |
2. ui 파일 |
3. ui 파일을 통해 자동 생성된 python 코드
그리고 변환한 코드를 Wrapping한 클래스를 만들어 사용하면 됩니다.
이렇게 친절하게 저희 직원에게 소개해줬더니,
아직도 커맨드 명령어를 사용하느냐, 그리고 컴파일러를 이용하여 Python 코드를 만든 후 또 Wrapping 클래스 만들어야 하느냐
C#에 비해 불편하고 복잡하다는 대답을 들었습니다.
맞는 말입니다.
C#에 비해 불편합니다.
위 방법에 비해 좀더 간편한 방법이 있긴합니다.
ui 파일을 컴파일하여 Python코드를 만들어 사용하지 않고 바로 사용하는 방법입니다.
- class QSpinnerPane(QWidget):
- def __init__(self):
- import os
- from PyQt5 import QtWidgets, uic
- QWidget.__init__(self)
- ui_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'UI', 'Spinner.ui')
- uiClass, qtBaseClass = uic.loadUiType(ui_path)
- self.ui = uiClass()
- self.ui.setupUi(self)
ui 파일을 로드한 후(8번째 줄)에 setupUi 함수를 호출(10번째 줄)하여 화면을 생성합니다.
하지만 이 방법의 단점도 존재하는데, 이렇게 하면 ui 클래스를 생성하지 않으므로 IDE의 Intellisense를 사용할 수 없게 됩니다.
큰 단점입니다.
저의 경우는 PyQt5로 개발한지 4년이 다되어 가니 첫번째 방법도 큰 불편함이 없는데,처음 접하는 사람에게는 이런 방법이 생소하고 불편할것 같습니다.
PyQt도 훌륭한 UI 라이브러리이지만 다양한 라이브러리 혹은 C#의 DevExpress, Telerik같은 상용 UI 라이브러리가 나오면 좋겠습니다.
댓글
댓글 쓰기