PyQt PyQt/PySide – 图标显示

PyQt PyQt/PySide – 图标显示

在本文中,我们将介绍如何在PyQt和PySide中显示图标。

图标是GUI应用程序中常用的元素之一,它可以增加应用程序的可视性和易用性。PyQt和PySide提供了在应用程序中显示图标的功能。

阅读更多:PyQt 教程

1. 在按钮上显示图标

在PyQt和PySide中,我们可以在按钮上显示图标。首先,我们需要准备图标文件,可以是PNG格式、SVG格式或其他支持的格式。然后,我们可以使用QIcon类和QPushButton类来实现图标在按钮上的显示。

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(100, 100, 300, 200)
        self.setWindowTitle('Icon Display')

        # 设置按钮1的图标为PNG格式的图标
        btn1 = QPushButton(QIcon('icon.png'), 'Button 1', self)
        btn1.setGeometry(50, 50, 100, 30)

        # 设置按钮2的图标为SVG格式的图标
        btn2 = QPushButton(QIcon('icon.svg'), 'Button 2', self)
        btn2.setGeometry(50, 100, 100, 30)

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

在上述代码中,我们首先导入了必要的模块,然后创建了一个继承自QWidget的自定义窗口类MyWindow。在initUI方法中,我们设置了窗口的几何位置和大小,并设置了窗口的标题。

接下来,我们创建了两个QPushButton对象。在构造函数中,我们使用了QIcon类来创建了两个图标,并使用了QPushButton类来创建了两个按钮。通过在构造函数的QIcon参数中指定图标文件的路径,我们可以在按钮上显示相应的图标。

最后,我们创建了一个QApplication对象app,并将自定义窗口对象window显示出来。

示例代码中使用的图标文件可以是任何支持的格式,可以根据自己的需要替换成其他图标文件。

2. 在菜单栏和工具栏上显示图标

除了按钮,我们还可以在菜单栏和工具栏上显示图标。PyQt和PySide提供了QAction类来实现在菜单栏和工具栏上显示图标的功能。

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, qApp

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('Icon Display')

        # 创建一个菜单栏
        menubar = self.menuBar()

        # 创建一个文件菜单
        file_menu = menubar.addMenu('File')

        # 创建一个退出动作,设置图标为SVG格式的图标
        exit_action = QAction(QIcon('icon.svg'), 'Exit', self)
        exit_action.setShortcut('Ctrl+Q')
        exit_action.triggered.connect(qApp.quit)

        # 将退出动作添加到文件菜单中
        file_menu.addAction(exit_action)

        # 创建一个工具栏
        toolbar = self.addToolBar('ToolBar')

        # 将退出动作添加到工具栏中
        toolbar.addAction(exit_action)

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

在上述代码中,我们创建了一个继承自QMainWindow的自定义窗口类MyWindow。在initUI方法中,我们设置了窗口的标题。

然后,我们通过调用menuBar方法创建了一个菜单栏,通过调用addMenu方法创建了一个文件菜单。接着,我们使用QAction类创建了一个退出动作,设置了其图标为SVG格式的图标。我们还设置了退出动作的快捷键为”Ctrl+Q”,并将其与qApp.quit槽函数连接起来,以实现在点击退出动作时退出应用程序。

接下来,我们将退出动作添加到了文件菜单中,通过调用addAction方法。

在代码中,我们还通过调用addToolBar方法创建了一个工具栏,并将退出动作添加到了工具栏中。

3. 在系统托盘中显示图标

PyQt和PySide还提供了在系统托盘中显示图标的功能。可以使用QSystemTrayIcon类来实现在系统托盘中显示图标。下面是一个示例代码:

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QMainWindow, qApp, QSystemTrayIcon, QAction, QMenu

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('Icon Display')

        # 创建一个系统托盘图标
        self.trayIcon = QSystemTrayIcon(self)
        self.trayIcon.setIcon(QIcon('icon.png'))
        self.trayIcon.setToolTip('Icon Display')

        # 创建一个退出动作,并将其添加到系统托盘菜单中
        exitAction = QAction('Exit', self)
        exitAction.triggered.connect(qApp.quit)

        trayMenu = QMenu()
        trayMenu.addAction(exitAction)

        self.trayIcon.setContextMenu(trayMenu)

        # 显示系统托盘图标
        self.trayIcon.show()

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

在上述代码中,我们首先创建了一个继承自QMainWindow的自定义窗口类MyWindow。在initUI方法中,我们设置了窗口的标题。

然后,我们通过实例化QSystemTrayIcon类创建了一个系统托盘图标对象,并使用setIcon方法设置了图标文件路径。通过setToolTip方法设置了鼠标悬停在图标上时显示的提示信息。

接下来,我们创建了一个退出动作,并将其添加到系统托盘菜单中。通过QMenu类创建了一个菜单对象,通过调用addAction方法将退出动作添加到菜单中,并通过setContextMenu方法将菜单对象设置为系统托盘图标的上下文菜单。

最后,我们通过调用show方法显示了系统托盘图标。

总结

在本文中,我们介绍了如何在PyQt和PySide中显示图标。我们学习了如何在按钮、菜单栏、工具栏和系统托盘中显示图标,并给出了相应的示例代码。通过这些功能,我们可以为应用程序添加图标,提升应用程序的可视性和易用性。希望本文对你在使用PyQt和PySide开发应用程序时有所帮助。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程