如何做优秀的视频网站,网站建设公司方案,网站开发业务方向架构文档,广州公司注册流程详解添加资源文件在使用PyQt进行图形界面开发的时候不免要用到一些外部资源#xff0c;比如图片#xff0c;qss配置文件等。在前面代码中#xff0c;遇到这类问题#xff0c;我们使用绝对路径的方式来解决#xff0c;这种方式#xff0c;本身有其不方便之处(比如#xff0c;…添加资源文件在使用PyQt进行图形界面开发的时候不免要用到一些外部资源比如图片qss配置文件等。在前面代码中遇到这类问题我们使用绝对路径的方式来解决这种方式本身有其不方便之处(比如调整图片路径后对应代码需要修改代码的维护性变差), 还有在app进行打包发布的时候通常图片资源却不方便处理app安装的时候还必须确保app可以正确地找到这些资源还有出于保护一些资源文件的出发不便于直接发布图片qss资源等等。为解决这些问题我们可以使用Qt官方提供的工具将这些资源文件编译成二进制文件直接打包到程序中。为了编译这些资源文件通常我们需要在代码目录下创建一个.qrc后缀的文件为了叙述方便我们假设这个文件的名字为resource.qrc它和我们主py文件位于同一个目录。一个 .qrc 资源集合文件是用来指定文件将被嵌入其资源的 XML 文件。根节点为 RCC 里面可以包含若干 qresource 节点每个 qresource 有自己的 prefix(路径前缀)属性qresource 节点包含了若干 file 节点描述了各个文件相对于 .qrc 的路径。在 C Qt 的 IDE 中我们添加资源后他会自动编译出二进制文件。但在 PyQt 中我们需要手动来完成这些操作。在resource.qrc输入以下内容 上面就是一个qrc文件的基本框架假设我们需要使用一个在res下名为use-python.gif的动画文件在qresource 项之间插入res/use-python.gif/file这时的resource.qrc文件如下所示 res/use-python.gif 编译资源文件述资源文件并不能直接使用 需要将其转换成对应的py文件才能导入转换命令如下pyrcc5 -o rosource_rc.py resource.qrc# rosource_rc.py为转换生成的包含资源信息的py文件# resource.qrc 为我们所写的XML资源文件在VS Code中我们可以借助插件PYQT Intergration提供的菜单来转换(需要先配置好 rcc 的路径) 使用该插件在 .qrc 文件上右键选择编译资源文件编译结果如下使用时 在代码中先导入编译出来的py文件:import resource_rc在引用.qrc 资源中的文件时路径为冒号prefix路径前缀file相对路径 。self.movie QMovie(:/res/use-python.gif)资源文件加载测试创建文件loadresourec.py, 播放use-python.gif这次不使用绝对路径加载文件而是使用资源加载的方式来实现。resource.qrc文件内容如下 res/use-python.gif loadresourec.py完整代码如下import sysfrom PyQt5 import QtCore, QtGui, QtWidgetsfrom PyQt5.QtWidgets import (QApplication, QWidget, QLabel, QVBoxLayout)from PyQt5.QtGui import QMoviefrom PyQt5.QtCore import Qt, QSizeimport resource_rc class DemoLoadResource(QWidget): def __init__(self, parentNone): super(DemoLoadResource, self).__init__(parent) # 设置窗口标题 self.setWindowTitle(实战PyQt5: LoadResource Demo!) # 设置窗口大小 self.resize(400, 300) self.initUi() def initUi(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) def resizeEvent(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()) 运行结果如下图自定义资源加载测试本文知识点构建一个自定义资源文件将自定义资源文件转换成对应的py文件加载自定义资源文件重载resizeEvent()事件获得尺寸变化信息。喜欢本文内容就收藏点赞评论关注和转发。