蓝色星晨|045-添加资源文件,实战PyQt5:
一个.qrc资源集合文件是用来指定文件将被嵌入其资源的XML文件 。 根节点为RCC , 里面可以包含若干qresource节点 , 每个qresource有自己的prefix(路径前缀)属性 , qresource节点包含了若干file节点 , 描述了各个文件相对于.qrc的路径 。 在C++Qt的IDE中 , 我们添加资源后他会自动编译出二进制文件 。 但在PyQt中 , 我们需要手动来完成这些操作 。
【蓝色星晨|045-添加资源文件,实战PyQt5:】在resource.qrc输入以下内容:
上面就是一个qrc文件的基本框架 , 假设我们需要使用一个在res下名为use-python.gif的动画文件 , 在qresource项之间插入
res/use-python.gif/file>
这时的resource.qrc文件如下所示
res/use-python.gif编译资源文件述资源文件并不能直接使用 , 需要将其转换成对应的py文件才能导入 , 转换命令如下:
pyrcc5-orosource_rc.pyresource.qrc#rosource_rc.py为转换生成的包含资源信息的py文件#resource.qrc为我们所写的XML资源文件在VSCode中 , 我们可以借助插件PYQTIntergration提供的菜单来转换(需要先配置好rcc的路径):
self.movie=QMovie(":/res/use-python.gif")资源文件加载测试创建文件loadresourec.py,播放use-python.gif , 这次不使用绝对路径加载文件 , 而是使用资源加载的方式来实现 。
resource.qrc文件内容如下:
res/use-python.gifloadresourec.py完整代码如下:
importsysfromPyQt5importQtCore,QtGui,QtWidgetsfromPyQt5.QtWidgetsimport(QApplication,QWidget,QLabel,QVBoxLayout)fromPyQt5.QtGuiimportQMoviefromPyQt5.QtCoreimportQt,QSizeimportresource_rcclassDemoLoadResource(QWidget):def__init__(self,parent=None):super(DemoLoadResource,self).__init__(parent)#设置窗口标题self.setWindowTitle("实战PyQt5:LoadResourceDemo!")#设置窗口大小self.resize(400,300)self.initUi()definitUi(self):vLayout=QVBoxLayout(self)self.movie=QMovie(":/res/use-python.gif")self.disp_gif=QLabel(self)self.disp_gif.setMovie(self.movie)vLayout.addWidget(self.disp_gif)self.movie.start()self.setLayout(vLayout)defresizeEvent(self,event):newSize=self.disp_gif.size()newSize.setWidth(newSize.width()-32)newSize.setHeight(newSize.height()-32)self.movie.setScaledSize(newSize)super(DemoLoadResource,self).resizeEvent(event)if__name__=='__main__':app=QApplication(sys.argv)window=DemoLoadResource()window.show()sys.exit(app.exec())运行结果如下图:
推荐阅读
- |世界上唯一蓝色血液生物,活了4亿年,救了无数人类却救不活自己
- 蓝色星晨|怀旧复古移动硬盘盒测评,追忆童年的磁带时光
- 天文在线|蓝月亮真的是蓝色的吗?它下一次将何时到来?
- 蓝色星晨|苹果中招,我国隐藏的反击手段——用户数量和稀土资源,剑指微信
- 美颜|地球早已不是蔚蓝色的了?专家:人类看到的地球照片都是美颜后的
- 外星人|新人种的发现,神秘的蓝色和绿色人种!
- 蓝色星晨|我们的路还很长,网传5nm蚀刻机研发成功?真相还未得到确认
- 蓝色星晨|对我们有什么影响?,华为会被打倒吗?如果华为被打倒了
- 蓝色星晨|网速却慢如蜗牛,一招教你解除网络限制,iPhone信号满格
- 蓝色星晨|仅次于台积电,投资百亿美元全部打水漂,美芯片巨头败走中国