728x90
1. 코드에서 위젯 생성과 실행
코드상에서 직접 위젯을 생성하고 실행을 하는 코드입니다.
import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow
class ExampleWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("PyQt5 Begin")
self.resize(400, 200)
label = QtWidgets.QLabel('라벨', self)
label.move(0, 50)
button = QtWidgets.QPushButton('버튼', self)
button.move(0, 100)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mainWin = ExampleWindow()
mainWin.show()
app.exec_()
2. PyQt5.uic.pyuic 모듈을 통한 코드 변환
디자이너를 통해 UI 파일을 생성하고 이를 변환합니다.
python -m PyQt5.uic.pyuic 'in.ui' -o 'out.py'
(-m 옵션은 해당 파이썬이 가지고 있는 모듈을 실행하는 것입니다.)
(pyqt) PS C:\Users\Desktop\pyqt\Example\_begin> python -m PyQt5.uic.pyuic .\example.ui -o 2.py
아래와 같은 코드가 생성됩니다.
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file '.\example.ui'
#
# Created by: PyQt5 UI code generator 5.14.1
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(320, 240)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(70, 30, 56, 12))
self.label.setObjectName("label")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(80, 100, 75, 23))
self.pushButton.setObjectName("pushButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 320, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label.setText(_translate("MainWindow", "라벨"))
self.pushButton.setText(_translate("MainWindow", "버튼"))
다음과 같이 어플리케이션을 실행하기 위한 코드를 삽입해야 합니다.
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
app.exec_()
3. UI와 코드의 연결
UI 파일을 읽어서 연결하는 방식으로 추천드리는 방법입니다.
import sys
from PyQt5 import QtCore, QtWidgets, uic
from PyQt5.QtWidgets import QMainWindow
ui = uic.loadUiType('example.ui')[0]
class ExampleWindow(QMainWindow, ui):
def __init__(self):
super().__init__()
self.setupUi(self)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
mainWin = ExampleWindow()
mainWin.show()
app.exec_()
정리
방법 | 설명 |
1 | 예제용. |
2 | 거의 사용하지 않는 방법이며 디버깅용으로 활용할 수 있다. |
3 | 디자이너를 활용하여 편하게 디자인한다. 물론 다양한 이벤트, 시그널에 대한 처리는 직접해야한다. |
세 방법의 차이점은 초기화와 관련이 있습니다.
'Application > PyQt5' 카테고리의 다른 글
파이큐티(PyQt5) 시작하기 - 구글 날씨 검색기 만들기 -2 : 모듈 연동과 이벤트 처리 (0) | 2020.07.22 |
---|---|
파이큐티(PyQt5) 시작하기 - 구글 날씨 검색기 만들기 -1 : 디자이너 활용 (0) | 2020.07.22 |
파이큐티(PyQt5) 시작하기 - 디자이너(designer) 설치 (0) | 2020.07.22 |
파이큐티앱 만들기 : 나만의 코드 저장소 (0) | 2020.07.21 |
카페에서 노트북하시는 분들께 유용한 앱! (0) | 2020.07.18 |