Loading your .ui file in Python
designer/example_1.py
import os
import sys
from PyQt6 import QtWidgets, uic
basedir = os.path.dirname(__file__)
app = QtWidgets.QApplication(sys.argv)
window = uic.loadUi(os.path.join(basedir, "mainwindow.ui"))
window.show()
app.exec()
To load a UI from the __init__ block of an existing widget (e.g. a QMainWindow) you can use uic.loadUI(filename, self).
designer/example_2.py
import os
import sys
from PyQt6 import QtCore, QtGui, QtWidgets, uic
basedir = os.path.dirname(__file__)
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
uic.loadUi(os.path.join(basedir, "mainwindow.ui"), self)
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()
Converting your .ui file to Python
pyuic6 mainwindow.ui -o MainWindow.py
Building your application
from MainWindow import Ui_MainWindow
class MainWindow (QMainWindow, Ui_MainWindow):
def __init__ (self, *args, obj=None, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.setupUi(self)
Adding application logic
import random
import sys
from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import QApplication, QMainWindow
from MainWindow import Ui_MainWindow
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.show()
# You can still override values from your UI file within your code,
# but if possible, set them in Qt Creator. See the properties panel.
f = self.label.font()
f.setPointSize(25)
self.label.setAlignment(
Qt.AlignmentFlag.AlignHCenter
| Qt.AlignmentFlag.AlignVCenter
)
self.label.setFont(f)
# Signals from UI widgets can be connected as normal.
self.pushButton.pressed.connect(self.update_label)
def update_label(self):
n = random.randint(1, 6)
self.label.setText("%d" % n)
app = QApplication(sys.argv)
w = MainWindow()
app.exec()
댓글