1、引言

在Python编程中,PyQt库是使用率较高的一个编写程序软件的图形界面库。我们常常需要使用图标美化界面,如给控件设置图标、菜单中添加图标指示,图标资源除了在网上下载现成的图标文件外,也可以使用PyQt库中内置的图标。实际上,在PyQt5界面库中内置了大约70个左右的常用图标,不同版本的PyQt库中其个数略有区别,下面给出获取这些图标并显示的方法。

2、软件运行界面

先看下软件界面,如下图所示,在一个窗口中,使用网格布局(QGridLayout),每行显示4个按钮控件,在每个按钮控件上显示出一个图标,并同时显示出该图标的名称及其对应的索引号。

3、代码实现

在PyQt5中可使用QApplication.style().standardIcon()方法来实现对其内置图标的使用,实现上述界面的代码及其简单,加上注释及空行,全部代码仅需35行即可实现了,如下图所示。
# -*- coding: utf-8 -*-#import sysfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class MainWnd(QWidget): def __init__(self, parent=None): super(MainWnd, self).__init__(parent) icons = sorted(self.getEnumStrings(QStyle, QStyle.StandardPixmap).items()) layout = QGridLayout(self) colNums = 4 #每行显示的图标数目 for i, iconInfo in enumerate(icons[1:]): btn = QPushButton(QApplication.style().standardIcon(i), ' {} - {}'.format(*iconInfo)) btn.setStyleSheet('QPushButton{text-align:left; height:30}') layout.addWidget(btn, int(i / colNums), i % colNums) self.setWindowTitle('Qt内置图标显示') self.setWindowIcon(QApplication.style().standardIcon(QStyle.SP_DriveFDIcon)) def getEnumStrings(self, cls, enum): s = {} for key in dir(cls): value = getattr(cls, key) if isinstance(value, enum): s['{:02d}'.format(value)] = key return sif __name__ == '__main__': app = QApplication(sys.argv) w = MainWnd() w.show() sys.exit(app.exec_())
其中,对内置图标的所有索引值是存储QStyle.StandardPixmap的枚举变量中的,因此,只需要取出该变量所有可能的取值及其对应的字符串值,即可在按钮控件上进行显示该图标的信息。本例中通过函数getEnumStrings获取StandardPixmap枚举类型变量的所有索引值及其对应的名称字符串,在主程序中进行解析调用即可。
从上面的代码可看出,使用Python+PyQt架构进行软件编程,相对于其它如C语言等高级编程语言来讲,代码量是极其简洁的。
举报/反馈

编码那些事

1653获赞 1755粉丝
分享编程技巧、交流编程经验
关注
0
0
收藏
分享