PyQt5编程:获取PyQt5中内置的图标并显示

本文介绍如何利用PyQt5内置的标准图标创建美观的桌面程序界面,通过QApplication.style().standardIcon()方法,展示了如何在控件上显示图标及其索引,并提供了修改示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、引言

PyQt5是Python跨平台GUI编程的重要工具,可以提供优美的桌面程序画面,在给控件设置图标方面,网络免费图标资源杂乱不成体系,精美的图标需要付出一定的费用。为了快速部署控件图标,不再为这种事烧脑劳神,这不PYqt5提供了标准化的内置图标,调用起来只需要非常方便,下面就用一个程序展示这些图标,并提供调用程序,本文参考了作者:编码那些事所著的《Python3+PyQt5编程:如何获取PyQt5中内置的图标并显示?》一文,但该文中程序脚本格式存在问题,本程序调试成功并将程序展示给大家,请参考。

2、Pyqt5程序的实现

设计方法是在一个窗口中,使用网格布局(QGridLayout),每行显示5个按钮控件,在每个按钮控件上显示出一个图标,并同时显示出该图标的名称及其对应的索引号。

使用QApplication.style().standardIcon()方法来实现对其标准内置图标的使用,程序中使用了较多的面向对象编程方法,值得反复研究。

用户在自己的程序调用时,可以直接对于上图的编号进行调用,方法如下:

self.bt_1.setIcon(QApplication.style().standardIcon(29)) #bt_1可换成自己的控件,29是图标标号

完整程序代码如下:

# -*- coding: utf-8 -*-#
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class MainWnd(QWidget):
    def __init__(self, parent=None):
        super(MainWnd, self).__init__(parent)

        self.move(0,0)

        icons = sorted(self.getEnumStrings(QStyle, QStyle.StandardPixmap).items())
        layout = QGridLayout(self)

        colNums = 5 #每行显示的图标数目#
        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(0))

    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 s

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值