用pyinstaller打包动态加载ui文件的程序,ui文件无法被打包的问题

问题描述

使用Qt Designer制作ui界面,因为在开发过程中要经常修改ui界面,所以选择在程序中动态加载.ui文件,而不是用pyuic5转换成.py文件,这样做的好处就是修改.ui文件后不需要每次都进行转换操作。最初采用的动态加载方式如下:

# 导入ui界面
self.ui = uic.loadUi("my_ui.ui", self)

而且这个ui界面中用到了一张本地图片image.png,是在Qt Designer中的QLabel对象mylabel中的pixmap选项中导入的。
完成程序编写后,在pycharm中运行正常,但是当使用pyinstaller打包成exe文件后,发现程序运行不了,会提示找不到xxx.ui这样的错误。如果此时将.ui文件直接拷贝到exe文件所在的dist目录下,则程序可以运行,但是图片仍然加载不了

问题的原因:在使用 PyInstaller 打包程序时,动态加载的 .ui 文件不会自动被包含在生成的 .exe 文件中,因此运行时找不到该文件。

解决方法

在网上搜了很久,大多数思路都是先生成**.spec文件**,然后在.spec文件中修改datas列表,将本地资源(.ui文件、图片文件等)加入到这个datas列表中。然而,我尝试了多次,都没有成功。最后还是通过chatGPT4获得了解决方案。以下是具体步骤:

1. 修改主程序代码

在你的 Python 程序中,添加一个函数resource_path<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值