文章目录
- 1 pyside6加载ui文件
- 2 使用pyinstaller打包
更多精彩内容 |
---|
👉内容导航 👈 |
👉Qt开发 👈 |
👉python开发 👈 |
1 pyside6加载ui文件
方法1: 直接加载ui文件
from PySide6.QtWidgets import QApplication, QWidget, QPushButton
from PySide6.QtUiTools import QUiLoader
import sysif __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_Formclass 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路径;