本文记录了 Python 安装 Pyside6 库,以及载入/读取 .py
类文件的相关代码。
前言
以下为 PyPI 网站对 Pyside6 的介绍。
PySide6 is the official Python module from the Qt for Python project, which provides access to the complete Qt 6.0+ framework.
Pyside6 提供了两种读取 UI 文件的方法,本文仅讲解读取生成 Python 类后的 UI 文件的方法。
前期准备
此部分为 Pyside6 库读取生成 Python 类后的 .py
文件前所需要做的准备。
安装 Pyside6
- 执行以下命令安装 Pyside6
pip install pyside6
准备 .ui
文件
- 新建一个
mainwindow.ui
文件,将以下代码复制粘贴至其中,保存后退出<?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>400</width> <height>300</height> </rect> </property> <property name="windowTitle"> <string>MainWindow</string> </property> <widget class="QWidget" name="centralWidget"> <widget class="QPushButton" name="pushButton"> <property name="geometry"> <rect> <x>110</x> <y>80</y> <width>201</width> <height>81</height> </rect> </property> <property name="text"> <string>PushButton</string> </property> </widget> </widget> <widget class="QMenuBar" name="menuBar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>400</width> <height>20</height> </rect> </property> </widget> <widget class="QToolBar" name="mainToolBar"> <attribute name="toolBarArea"> <enum>TopToolBarArea</enum> </attribute> <attribute name="toolBarBreak"> <bool>false</bool> </attribute> </widget> <widget class="QStatusBar" name="statusBar"/> </widget> <layoutdefault spacing="6" margin="11"/> <resources/> <connections/> </ui>
一般来说
.ui
文件是由 Qt Designer 生成的,这里为了方便直接创建文件作为例子。
文件读取
此部分正式开始讲解 Pyside6 读取生成 Python 类后的 .py
文件的方法。
普通示例
- 进入
mainwindow.ui
文件所在目录,终端执行以下命令将.ui
文件转为.py
文件pyside6-uic mainwindow.ui -o ui_mainwindow.py
- 在代码中从
ui_mainwindow.py
文件导入由mainwindow.ui
文件生成的 Python 类from ui_mainwindow import Ui_MainWindow
- 在代码中导入其他所需要的依赖
import sys from PySide6.QtWidgets import QMainWindow from PySide6.QtCore import QFile
- 编写一个
MainWindow
类,继承于QMainWindow
类class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self)
- 最后运行代码
if __name__ == "__main__": from PySide6.QtWidgets import QApplication app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec())
完整示例
- 将以上的代码完整的组合一下,得到以下代码
import sys from PySide6.QtWidgets import QApplication, QMainWindow from PySide6.QtCore import QFile from ui_mainwindow import Ui_MainWindow class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.ui = Ui_MainWindow() self.ui.setupUi(self) if __name__ == "__main__": app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec())
实际上用来载入 UI 的 Python 类核心代码是以下两行
self.ui = Ui_MainWindow() self.ui.setupUi(self)
总结
此方法载入 UI 文件需要每次更新 UI 文件内容后都重新生成对应的 Python 类文件,否则程序运行显示的界面和 .ui
文件会不一致。
此外,使用该方法生成的 Python 类在 Pycharm 中会有很多波浪号。
如果想要打包程序,可以使用此方法。