在使用 Qt Designer 设计界面的时候,经常会使用到外部的一些图片资源
但是我发现 Qt 它有自己的一套图片资源管理体系
甚至可以把外部图片编译成 PyQt 可以直接调用的 py 资源文件
看了之后真是大开眼界,原来还可以这么玩!
如图,我的这一大堆图片文件全部编译到了 res_rc.py 里
更重要的是,它可以在 Qt Designer 里面直接引用这些资源!
下面来说一下怎么实现的吧,我这里演示一下给一个按钮添加图标
这里做一个全新的例子,首先新建一个 MainWindow,然后把需要的控件拖进去,我这里拖一个 button 按钮
然后把里面的文字都给去掉,并修改 icon 属性
这个时候会看到里面什么都没有,不用急,我们把需要的图片先放到 images 目录下,调整好目录位置后
点击编辑资源 –> 新建资源文件,给资源文件起个名字,然后点保存
这样资源文件就建好了
回到编辑资源窗口。然后新建一个前缀,比如叫 images
新建好之后就可以点右边的添加文件了,这时候把我们之前准备的图片文件给添加进来
这就是资源文件的使用方法,以后还需要图片的时候直接在这个窗口把需要的图片也添加进来即可
点确定,这时候我们之前准备的图片就可以用了
如果嫌图标太大或者太小,可以直接在属性栏里面改 iconSize
这时候我们这个简单的 UI 就算设计完了
保存出来,现在我们可以来总结下看到我们当前工程文件夹下的所有文件
搞清楚每个文件是干什么的,有什么作用之后,开始进行编译
还是老方法,需要用到命令行(有能力的话可以写批处理,文件一拖上去就能执行编译脚本),先 cd 到当前的工程目录
然后分别使用 pyuic 编译 ui 界面文件,同时需要使用到 pyrcc 来编译 qrc 资源文件
语法:1
2 编译 ui 文件 pyuic4.bat -x 源文件名. ui -o 目标文件名. py
编译 qrc 文件 pyrcc4 源文件名. qrc -o 目标文件名_rc.py
这样就算是编译完成了,直接运行 demo.py 即可看到效果
最后说一下,其实搞 qrc 资源文件的目的在于应付 Qt Designer
如果直接在 python 里面编码的话,直接调用图片 url 就行了,不用这么复杂的
这个 qrc 文件可以直接用 Qt Designer 来生成,也可以参照网上的一些教程直接用记事本写 xml 格式的文件
但是最终核心还是要用到 Qt Designer 中去,由于 python 不能直接识别 qrc 这种文件
所以必须通过 PyQt 给的 pyrcc 工具来把 qrc 资源文件也编译成 python 能够识别的 py 文件
另一方面,把 png, jpeg 等图片文件编译成 py 文件的话,相当于对资源文件进行了打包加密
也相当于对用户进行了隐藏,不用把图片直接暴露在用户的视线里
最后总结一下整体的思路,就是当 Qt Designer 需要调用外部图片资源的时候
使用 Qt Designer 自带的资源管理器引入外部图片资源文件,并装载进一个 qrc 列表文件
最后在编译的时候,除了编译 ui 文件,也需要把 qrc 文件一并编译
ui 文件的编译使用 pyuic,qrc 文件的编译使用 pyrcc