分享

Python3+PyQt5编程:如何获取PyQt5中内置的图标并显示?

 lgk88888 2021-09-01

1、引言

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

2、软件运行界面

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

3、代码实现

在PyQt5中可使用QApplication.style().standardIcon()方法来实现对其内置图标的使用,实现上述界面的代码及其简单,加上注释及空行,全部代码仅需35行即可实现了,如下图所示。

sys
PyQt5.QtWidgets *
PyQt5.QtGui *
PyQt5.QtCore *

(QWidget):
    (, parent=):
        (MainWnd, ).(parent)

        icons = (.getEnumStrings(QStyle, QStyle.StandardPixmap).items())
        layout = QGridLayout()
        colNums = i, iconInfo (icons[:]):
            btn = QPushButton(QApplication.style().standardIcon(i), .format(*iconInfo))
            btn.setStyleSheet()
            layout.addWidget(btn, (i / colNums), i % colNums)

        .setWindowTitle()
        .setWindowIcon(QApplication.style().standardIcon(QStyle.SP_DriveFDIcon))

    (, cls, enum):
        s = {}
        key (cls):
            value = (cls, key)
            (value, enum):
                s[.format(value)] = key
        s

__name__ == :
    app = QApplication(sys.argv)
    w = MainWnd()
    w.show()
    sys.exit(app.exec_())

其中,对内置图标的所有索引值是存储QStyle.StandardPixmap的枚举变量中的,因此,只需要取出该变量所有可能的取值及其对应的字符串值,即可在按钮控件上进行显示该图标的信息。本例中通过函数getEnumStrings获取StandardPixmap枚举类型变量的所有索引值及其对应的名称字符串,在主程序中进行解析调用即可。

从上面的代码可看出,使用Python+PyQt架构进行软件编程,相对于其它如C语言等高级编程语言来讲,代码量是极其简洁的。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多