To demonstrate, we use the Qt Widgets animation easing example.
The application consists of one source file, easing.py
, a UI file form.ui
, a resource file easing.qrc
and the project file, easing.pyproject
file in the YAML format:
{ "files": ["easing.qrc", "ui_form.py", "easing.py", "easing_rc.py", "form.ui"] }
The UI file is converted to Python code building the form using the User Interface Compiler (uic):
uic -g python form.ui > ui_form.py
Since the top level widget is named Form
, this results in a Python class named Ui_Form
being generated. It provides a function setupUi()
, taking the widget as parameter, which is called to create the UI elements:
from ui_form import Ui_Form ... class Window(QtWidgets.QWidget): def __init__(self, parent=None): super(Window, self).__init__(parent) self.m_ui = Ui_Form() self.m_ui.setupUi(self)
Later on, the widgets can be accessed via the Ui_Form
class:
self.m_ui.graphicsView.setScene(self.m_scene)
Besides setupUi()
, Ui_Form
provides another method retranslateUi()
, which can be called in reaction to a QEvent of type QEvent.LanguageChange, which indicates a change in the application language.
The QUiLoader class provides a form loader object to construct the user interface at runtime. This user interface can be retrieved from any QIODevice, e.g., a QFile object. The QUiLoader::load() function constructs the form widget using the user interface description contained in the file.
It is demonstrated by the uiloader example:
from PySide2.QtUiTools import QUiLoader if __name__ == '__main__': # Some code to obtain the form file name, ui_file_name app = QApplication(sys.argv) ui_file = QFile(ui_file_name) if not ui_file.open(QIODevice.ReadOnly): print("Cannot open {}: {}".format(ui_file_name, ui_file.errorString())) sys.exit(-1) loader = QUiLoader() widget = loader.load(ui_file, None) ui_file.close() if not widget: print(loader.errorString()) sys.exit(-1) widget.show() sys.exit(app.exec_())
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/designer-using-a-ui-file-python.html