PyQt5资源系统
PyQt5支持Qt的资源系统。这是一种在应用程序中嵌入图标和翻译文件等资源的工具。这使得这些资源的打包和分发变得更加容易。
一个.qrc
资源集合文件是用来指定文件将被嵌入其资源的XML文件。然后,应用程序按原始名称引用资源文件,但前面有冒号。
有关完整说明(包括.qrc
文件格式),请参阅Qt文档中的Qt资源系统。
pyrcc5
pyrcc5是PyQt5相当于Qt的rcc实用程序,并以完全相同的方式使用。 pyrcc5读取.qrc
文件和资源文件,并生成一个只需要import
由应用程序编辑的Python模块, 以便使这些资源可用,就像它们是原始文件一样。
静态资源处理
PyQt进行图形界面开发时不免要用到一些图片资源或者qt designer编辑的ui文件。在app进行打包发布的时候,通常图片资源却不方便处理,app安装的时候还必须确保app可以找到图片。qt官方提供了一个工具可以把资源文件编译成二进制程序文件,直接打包到程序中去。
1.将ui文件编译为py文件
例如资源文件 main_windows.ui 输入以下命令:
python3 -m PyQt5.uic.pyuic windows.ui -o windows.py
或者
pyuic5 windows.ui -o windows.py
ui文件被转换为ui文件,这是pyqt程序要能够运行所必须的
2.将图片资源编译为py文件
例如存在图片 a.png 和 b.png 都位于 ./img/ 路径下面,在 ./ 下新建一个文件 img_rcc.qrc 文件,输入以下内容:
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/img">
<file alias="a.png">./img/a.png</file>
<file alias="b.png">./img/b.png</file>
</qresource>
</RCC>
alias的值是图片的代码里的文件名代号,prefix是文件名前缀
然后在终端里输入以下命令将img_rcc.qrc 转换为py文件:
pyrcc5 img_rcc.qrc -o img.py
生成了img.py 文件,观察img.py文件会发现,图片资源被转换为了bytes类型放在py文件里。
使用方法如下:
注意路径有一个冒号 ":"
from img.py import * # 导入这个文件,会自动调用资源初始化函数
# 使用资源的时候 访问的文件名 即 qrc里的 :prefix+alias ,例如
img = QPixmap(":/img/a.png")
注意:
必须将所有静态文件作以上处理。