【Qt for Python官方教程】使用pyside6-rcc引入.qrc文件
Qt 资源系统(Qt Resource System)是在应用程序里存储二进制文件的一种机制。
文件可以被嵌入到应用程序中,通过 QFile
类,和使用以 :/
开头的文件名表示的 QIcon
和 QPixmap
类来访问。
Qt 资源系统经常用来存储图片、图标、字体等各种第三方资源。这篇教程里我们将学习怎么载入自己的图片来作为按钮图标。
为了方便学习,我们来尝试修改 Qt 例程里的多媒体播放器。它的界面如下,多媒体的控制(播放、暂停、停止等)是用 QPushButton
组件完成的,使用的都是默认图标。
你可以通过设计图标来让你的程序更有吸引力,但是既然你不想自己设计它们,就是用下面这套图标吧。(这能有吸引力?)
你可以通过 Qt 资源系统(Qt Resource System)网站查询更多 rcc 命令、.qrc 文件格式、资源系统等信息。
.qrc 文件
在运行命令之前,要先把资源添加到 .qrc 文件中。下面的例子展示了 icons.qrc 文件中列出的资源。
</ui>
<!DOCTYPE RCC><RCC version="1.0">
<qresource><file>icons/play.png</file><file>icons/pause.png</file><file>icons/stop.png</file><file>icons/previous.png</file><file>icons/forward.png</file>
</qresource>
</RCC>
生成 Python 文件
完成 icons.qrc 文件后,使用 pyside6-rcc 工具来生成包含所有资源二进制信息的 Python 类。运行下面命令:
pyside6-rcc icons.qrc -o rc_icons.py
这里,-o 选项用来指明你的输出文件名,即 rc_icons.py。
在你的 Python 主文件里引用生成的类:
import rc_icons
修改例程
因为你是在修改一个现有的例程,你需要修改下面这几行代码:
from PySide6.QtGui import QIcon, QKeySequence
playIcon = self.style().standardIcon(QStyle.SP_MediaPlay)
previousIcon = self.style().standardIcon(QStyle.SP_MediaSkipBackward)
pauseIcon = self.style().standardIcon(QStyle.SP_MediaPause)
nextIcon = self.style().standardIcon(QStyle.SP_MediaSkipForward)
stopIcon = self.style().standardIcon(QStyle.SP_MediaStop)
将它们替换成如下代码:
from PySide6.QtGui import QIcon, QKeySequence, QPixmap
playIcon = QIcon(QPixmap(":/icons/play.png"))
previousIcon = QIcon(QPixmap(":/icons/previous.png"))
pauseIcon = QIcon(QPixmap(":/icons/pause.png"))
nextIcon = QIcon(QPixmap(":/icons/forward.png"))
stopIcon = QIcon(QPixmap(":/icons/stop.png"))
要保证成功替换图标,还需要在以下两处修改代码。
在你的引用后面加入
import rc_icons
然后,将类的构造函数修改成这样:
def __init__(self):super(MainWindow, self).__init__()self.playlist = QMediaPlaylist()self.player = QMediaPlayer()toolBar = QToolBar()self.addToolBar(toolBar)fileMenu = self.menuBar().addMenu("&File")openAction = QAction(QIcon.fromTheme("document-open"),"&Open...", self, shortcut=QKeySequence.Open,triggered=self.open)fileMenu.addAction(openAction)exitAction = QAction(QIcon.fromTheme("application-exit"), "E&xit",self, shortcut="Ctrl+Q", triggered=self.close)fileMenu.addAction(exitAction)playMenu = self.menuBar().addMenu("&Play")playIcon = QIcon(QPixmap(":/icons/play.png"))self.playAction = toolBar.addAction(playIcon, "Play")self.playAction.triggered.connect(self.player.play)playMenu.addAction(self.playAction)previousIcon = QIcon(QPixmap(":/icons/previous.png"))self.previousAction = toolBar.addAction(previousIcon, "Previous")self.previousAction.triggered.connect(self.previousClicked)playMenu.addAction(self.previousAction)pauseIcon = QIcon(QPixmap(":/icons/pause.png"))self.pauseAction = toolBar.addAction(pauseIcon, "Pause")self.pauseAction.triggered.connect(self.player.pause)playMenu.addAction(self.pauseAction)nextIcon = QIcon(QPixmap(":/icons/forward.png"))self.nextAction = toolBar.addAction(nextIcon, "Next")self.nextAction.triggered.connect(self.playlist.next)playMenu.addAction(self.nextAction)stopIcon = QIcon(QPixmap(":/icons/stop.png"))self.stopAction = toolBar.addAction(stopIcon, "Stop")self.stopAction.triggered.connect(self.player.stop)playMenu.addAction(self.stopAction)# many lines were omitted
运行例程
运行结果如下:
更多关于 Qt for Python 文章,可以查看 PySide6 官方教程 专栏。
【Qt for Python官方教程】使用pyside6-rcc引入.qrc文件相关推荐
- Python官方教程.pdf
人生苦短,快学Python! 之前总有人询问有没有Python的学习资料? 这次废了九牛二虎之力,为大家找到了几个最适合小白的Python的学习资料!容易入门,又全面,太好用了. 1. Python官 ...
- python官网 中文版-python .. 官方教程中文版.pdf
您所在位置:网站首页 > 海量文档  > 计算机 > Python python .. 官方教程中文版.pdf105页 ...
- PYTHON官方教程:Python3.11中文版文档
Python 每年都会发布新版本,上半年是功能锁定的测试版,年底是最终版本. Python 3.11 的特性集刚刚定稿,测试版本已经发布,开发人员在非生产代码上可以尝试使用这个最新版本,验证它能否在你 ...
- Caffe for Python 官方教程
导言 本教程中,我们将会利用Caffe官方提供的深度模型--CaffeNet(该模型是基于Krizhevsky等人的模型的)来演示图像识别与分类.我们将分别用CPU和GPU来进行演示,并对比其性能.然 ...
- Opencv4 -Python官方教程学习笔记33---BRIEF
理论 我们知道SIFT使用128维矢量作为描述符.由于它使用浮点数,因此基本上需要512个字节.同样,SURF最少也需要256个字节(用于64像素).为数千个功能部件创建这样的向量会占用大量内存,这对 ...
- revit打开服务器文件,Revit官方教程丨链接及打开IFC文件
链接 IFC 文件要使用 IFC 模型作为其他设计工作的参照,请将 IFC 文件链接到 Revit 模型.[*](可选)在链接 IFC 文件前,请单击"文件"选项卡 打开 (IFC ...
- python modbus类封装_Python 中引入一个文件,模块的概念
Python 提供了强大的模块支持,主要体现在,不仅 Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块. 通过这些强大的模块可以极大地提高开 ...
- python入门教程 官方-Python自学入门?
如果你是零基础入门 Python 的话,建议初学者至少达到两个目标: 会用,理解. 会用 通过 Python 入门教程,学习 Python 的语法,熟悉 Python 标准库的使用. 目前 Pytho ...
- Python 官方中文教程(简)
Python 官方教程 前言 这是一次系统学习Python官方教程的学习笔记 整个教程一共16章, 在学习过程中记录自己不知道的和一些重要的知识, 水平有限, 请指正. Python3.7 官方教程. ...
- python官方中文文档上线_微软官方上线Python教程
Windows 上做 Python 开发太痛苦?近日,微软上线了一系列Python官方教程<Develop with Python on Windows>,文档内容包括设置Python开发 ...
最新文章
- `MediaDevices.getUserMedia` `undefined` 的问题
- 编写你自己的单点登录(SSO)服务(转)
- Activity之launchMode:singleTop,singleTask与singleInstance
- 他解决了物理学千年争端,成就肩比牛顿、爱因斯坦,但却鲜有人知......
- python程序实例讲解_Python编程之属性和方法实例详解
- PHP 危矣?Zend Engine 团队宣布脱离 Rogue Wave
- CSS3制作3D水晶糖果按钮
- 关于Cocos2d-x中实例伸缩后的位置设置
- PHP基础知识------页面静态化
- piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql
- mysql 事务 实现_什么是mysql的事务和实现
- 汽车车牌JS正则表达式验证(含新能源车牌)
- 【AR开发】ARCore官方示例(Android)
- 利用python打乱xlsx表格
- 荣耀手机怎么使用鸿蒙系统,荣耀供应链6月全面恢复,安卓系统依然是第一选择,鸿蒙只是备选...
- 电脑其实很好玩,玩好了其实很无耻(转自校内)
- 从15亿到5000亿 eBay收购PayPal成硅谷传奇
- C语言循环计算输出圆周长
- Java 报错: Cannot deserialize instance of `com.ruoyi.web.entity.xxxEntity` out of START_ARRAY toke
- 2D弹簧质点系统的隐式求解
热门文章
- CATIA 视角操作
- 声艺fx16调音台怎么样_声艺FX16II 声艺(Soundcraft) FX16ii 调音台
- sublime如何运行HTML?
- C++11 字符串编码转换
- 亚马逊 速卖通 Lazada 敦煌网测评自养号技巧知识
- 计算机质量检测技术,计算机技术在建材质量检测中的应用分析
- QT制作一个串口调试助手出现乱码问题
- Docker 下载安装使用(简单教程)
- html5字体代码列表,html5——web字体(示例代码)
- php json转数组示例,php json转数组的例子