(2)python开发经验

发布于:2025-05-14 ⋅ 阅读:(18) ⋅ 点赞:(0)


更多精彩内容
👉内容导航 👈
👉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 无法提供属性提示。

生成 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路径;




网站公告

今日签到

点亮在社区的每一天
去签到