当前位置: 首页 > java >正文

(2)python开发经验

文章目录

      • 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 无法提供属性提示。

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



http://www.xdnf.cn/news/5812.html

相关文章:

  • 下周,Coinbase将被纳入标普500指数
  • windows c++ (9) 程序内注册服务并修改登录账户
  • 使用 `aiohttp` 构建高效的异步网络爬虫系统
  • 一次讲清 FP32 / FP16 / BF16 / INT8 / INT4
  • VR和眼动控制集群机器人的方法
  • 青少年编程与数学 02-019 Rust 编程基础 10课题、函数、闭包和迭代器
  • 机器学习中分类模型的常用评价指标
  • 设计模式系列(03):设计原则(二):DIP、ISP、LoD
  • SpringBoot与Eventuate Tram整合 - 实现转账最终一致性系统
  • 解锁生命周期评价密码:OpenLCA、GREET 与 R 语言的融合应用
  • 基于 Amazon Bedrock 和 Amazon Connect 打造智能客服自助服务 – 设计篇
  • 【阿里云】阿里云 Ubuntu 服务器无法更新 systemd(Operation not permitted)的解决方法
  • Java Solon v3.3.0 发布(国产优秀应用开发基座)
  • Spring Boot Swagger 安全防护全解析:从旧版实践到官方规范
  • Spring Boot 跨域问题全解:原理、解决方案与最佳实践
  • Tomcat和Nginx的主要区别
  • 【MySQL】第三弹——表的CRUD进阶(一)数据库约束
  • 地址簿模块-01.需求分析
  • D-Pointer(Pimpl)设计模式(指向实现的指针)
  • 在VSCode中接入DeepSeek的指南
  • 【时时三省】(C语言基础)使用字符串处理函数
  • 基于Spring Boot+Layui构建企业级电子招投标系统实战指南
  • 人脸识别系统中的隐私与数据权利保障
  • ‌OPE.AI开放平台:一站式企业AI应用引擎
  • 前端学习(2)—— CSS详解与使用
  • centos7.x下,使用宝塔进行主从复制的原理和实践
  • 博客系统技术需求文档(基于 Flask)
  • R语言绘图 | 渐变火山图
  • Leetcode 3548. Equal Sum Grid Partition II
  • Andorid之TabLayout+ViewPager