更多精彩内容 |
---|
👉内容导航 👈 |
👉Qt开发 👈 |
👉python开发 👈 |
1 pyside6加载ui文件
方法1: 直接加载ui文件
from PySide6.QtWidgets import QApplication, QWidget, QPushButton
from PySide6.QtUiTools import QUiLoader
import sys
if __name__ == "__main__":
app = QApplication(sys.argv) # 创建应用程序对象
ui = QUiLoader().load("widget.ui") # 加载ui文件
ui.show()
sys.exit(app.exec()) # 运行应用程序,并退出
方法2: 将ui文件生成为py源码,再进行加载
from PySide6.QtWidgets import QApplication, QWidget, QPushButton
import sys
from ui_widget import Ui_Form
class MyWidget(QWidget):
def __init__(self):
super().__init__()
self.ui = Ui_Form()
self.ui.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv) # 创建应用程序对象
w = MyWidget() # 创建窗口对象
w.show() # 显示窗口
sys.exit(app.exec()) # 运行应用程序,并退出
核心区别
特性 | QUiLoader 动态加载 | 生成 Ui 类静态加载 |
---|---|---|
实现方式 | 运行时直接解析 .ui 文件,无需预生成代码 |
通过 pyside6-uic 预生成 Python 类,直接调用 |
依赖文件 | 需保留 .ui 文件 |
只需 .py 文件,无需保留 .ui (部署时可选) |
代码耦合性 | 低(UI 与逻辑分离) | 较高(UI 类需显式集成到代码中) |
UI 修改生效 | 无需重新生成代码,直接修改 .ui 文件即可 |
需重新运行 pyside6-uic 生成新的 .py 文件 |
优缺点对比
QUiLoader
动态加载
- 优点:
- 灵活性高:修改 UI 后无需重新生成代码,适合频繁迭代 UI 的场景。
- 减少代码量:无需维护生成的 UI 类代码。
- 资源分离:UI 设计与业务逻辑完全解耦,便于团队协作。
- 缺点:
- 性能略低:运行时解析 XML 格式的
.ui
文件,比直接调用预生成类稍慢。 - 路径依赖:需确保
.ui
文件路径正确,部署时需携带该文件。 - 无代码提示:动态加载的控件需通过
findChild
获取,IDE 无法提供属性提示。
- 性能略低:运行时解析 XML 格式的
生成 Ui_MainWindow
类静态加载
- 优点:
- 性能高效:直接调用预生成代码,无运行时解析开销。
- 代码提示友好:生成的类包含所有控件属性,IDE 可自动补全(如
self.ui.button
)。 - 部署简单:只需分发
.py
文件,无需携带.ui
文件。
- 缺点:
- 流程繁琐:每次修改 UI 需重新生成代码。
- 代码冗余:生成的 UI 类可能包含大量样板代码(但对用户透明)。
2 使用pyinstaller打包
下载地址;
使用下面命令进行打包
pyinstaller.exe --paths E:\py\PythonProject\.venv\Lib\site-packages\PySide6 -w -F .\main.py # 在pycharm终端中如果安装了pyinstaller和pyside6,可以直接使用 pyinstaller -w -F main.py
常用选项
选项 | 说明 |
---|---|
-F /--onefile |
生成单个独立的 .exe 文件(适合简单脚本) |
-D /--onedir |
默认选项,生成包含依赖的目录结构(适合复杂项目) |
-w /--windowed |
隐藏控制台窗口(GUI程序必备) |
-c /--console |
显示控制台窗口(命令行程序默认启用) |
-i <图标路径> |
为 .exe 文件设置图标(支持 .ico 格式) |
-n |
设置生成可执行程序名称 |
--add-data <源路径;目标路径> |
添加额外文件(如配置文件、图片等) |
--hidden-import <模块名> |
强制包含未自动检测的模块 |
--noconfirm |
覆盖输出目录时不提示确认 |
--clean |
清理临时文件后再重新构建 |
--paths |
如果你的脚本依赖于不在 Python 路径中的库,可以使用这个选项来添加这些路径。 |
注意:
打包的时候资源文件、UI文件、图片文件等不会被pyinstaller打包,需要手动复制到dist路径;