본문 바로가기
PyQt5_

Qt Designer

by 자동매매 2023. 3. 13.

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()

mainwindow.ui
0.00MB

 

 

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()

 

'PyQt5_' 카테고리의 다른 글

Palettes  (0) 2023.03.13
Styles  (0) 2023.03.13
Events  (0) 2023.03.13
Windows  (0) 2023.03.13
Windows  (0) 2023.03.13

댓글