PYQT 自带的 Pyrcc 系统的使用,PyInstaller对PYQT程序进行打包,不能打包背景图片,图标等解决办法

问题

使用 PyInstaller 对程序进行打包,不能打包背景图片。打包后的软件可以正常运行,但涉及到图片相关的资源(如背景图片,头像)全部不显示。

问题分析

当使用Python PyInstaller对程序进行打包时,如果程序中涉及到背景图片,会出现无法打包背景图片的问题。这是由于PyInstaller默认只会将代码和依赖的库文件打包进可执行文件中,而不会将文件资源如图片等打包进去。因此,这些文件在程序运行时无法被找到,导致程序无法正常显示背景图片。

解决办法步骤

利用 PYQT 自带的 Pyrcc 系统,将图片转化为QT能调用的资源文件,然后在源代码中调用图片资源。

1.在项目中新建 image.qrc 文件。写入以下代码

<RCC>
  <qresource prefix="IMAGES">
    <file alias="icon">./icon.jpg</file>
  </qresource>
</RCC>

2.保存后,利用 PYQT 自带的 Pyrcc 系统,转化为资源文件。

Vscode中的操作是,右击image.qrc 文件,选择 PYQT:Compile Resource。
点击 PYQT:Compile Resource后,可以看到新生成的 image_rc.py 文件。
对这个方式有疑问的可以看这篇博客:
Pyrcc 环境配置验证

在这里插入图片描述

3.引用资源文件

有了新生成的 image_rc.py 文件,我们再将image_rc.py文件引用,再UI.py文件中调用资源文件。这里 image_rc 是我的资源文件 image_rc.py 的包名字。

import image_rc  # 引用image_rc.py资源文件

调用资源图片,就将如下原代码

# 设置控件背景
self.label.setStyleSheet("border-image:url(./icon.jpg);") 

修改为

self.label.setStyleSheet("border-image: url(:IMAGES/icon);")

IMAGES 对应 image.qrc文件里代码内容,IMAGES 是前缀值,icon是alias值
其他使用方式:

self.label_user_icon.setPixmap(QtGui.QPixmap(":IMAGES/icon"))

这个时候再去打包软件,就可以将图片资源一起打包带走了。

  1. 每次修改 image.qrc 文件,选择 PYQT:Compile Resource 前,一定要先保存再编译成图片资源
  2. image.qrc语法格式很挑剔,仔细查看空格
  3. 我们使用 image_rc.py 资源文件时,在Qt-designer中不显示图片,这是正常的。不如直接运行代码,图片资源加载其实是成功的,只是Qt-designer中看不到。
  4. PYQT6 没有 Pyrcc 资源系统,也许可以用 PYQT5 转好的资源文件,让PYQT6 去调用,自己去试吧!
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值