PyQt6 + Qt Designer
모든 GUI 인터페이스를 프로그래밍만으로 설계하는 것은 어려움이 있다. Qt는 편리한 디자인 도구인 Qt Designer를 제공한다.
PyQt 정보
- 1. PyQt6을 이용하여 파이썬으로 GUI 어플리케이션 만들기
- 2. PyQt6 Signals, Slots & Events
- 3. Qt6 Widgets
- 4. PyQt6 Layouts
- 5. PyQt6 + Qt Designer
- 6. Qt의 Model View
- 7. PyQt6의 MultiThreading
Qt Designer에서 .ui
파일을 생성 및 디자인하고, 완성된 .ui
파일을 다음과 같은 두 가지 방식 중 하나를 택해 PyQt6에 적용할 수 있다.
.loadUI()
메소드로 클래스에 로드한다.pyuic6
도구를 이용해 파이썬 코드로 변환한다.
.ui
파일 직접 로드
import sys
from PyQt6 import QtWidgets, uic
app = QtWidgets.QApplication(sys.argv)
window = uic.loadUi("mainwindow.ui")
window.show()
app.exec()from PyQt6 import uic
loadUi()
메소드를 사용하기 위해 uic
클래스를 임포트해야 한다. 이 메소드는 .ui
파일명을 인자로 받고 PyQt6 오브젝트를 리턴한다.
이미 존재하는 위젯에서 .ui
파일을 로드하기 위해서는, uic.loadUi(".ui파일", self)
와 같은 형태로 호출한다.
이 방식은 컴파일이 필요 없어 단순하지만, uic를 이용해 동적으로 로드하므로 IDE에서 객체명 자동완성이 되지 않는다는 치명적인 단점이 있다.
파이썬 코드로 변환 (권장)
pyuic6 mainwindow.ui -o MainWindow.py
위와 같은 명령어로 파이썬 파일로 변환 가능하다. 이 파일을 직접 수정하는 것은 권장되지 않는다. 수정은 Qt Designer에서 진행하고, 이 파일을 import하여 override 방식으로 사용하는 것이 권장된다.
from MainWindow import Ui_MainWindow
생성된 파이썬 모듈로부터 Ui_{Qt Studio에서 설정한 메인 윈도우 클래스명}
을 임포트한다.
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, *args, obj=None, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.setupUi(self)
위와 같이 클래스의 두 번째 Argument로 임포트한 클래스를 넘겨줘서 상속하도록 하고, __init__
에서 .setupUi(self)
메소드를 호출하면 된다.