📜  使用 PyQt5 的系统托盘应用程序(1)

📅  最后修改于: 2023-12-03 15:36:33.343000             🧑  作者: Mango

使用 PyQt5 的系统托盘应用程序

PyQt5 是 Python 语言的一种 GUI 库,其封装了 Qt 库,用于创建跨平台的图形用户界面应用程序。而系统托盘是指在 Windows 系统任务栏(或 macOS 和 Linux 的系统菜单栏)中图标化显示的小应用程序。本文将介绍如何使用 PyQt5 来创建一个可以在系统托盘区域显示的小应用程序。

PyQt5 的 SystemTrayIcon 类

在 PyQt5 中,我们可以通过 QSystemTrayIcon 类来创建系统托盘应用程序的图标。其主要方法和属性如下:

  • show():显示系统托盘图标。
  • hide():隐藏系统托盘图标。
  • setIcon(icon):设置系统托盘图标。其中 iconQIcon 类型的对象。
  • setToolTip(toolTip):设置系统托盘图标的提示文本。
  • activated.connect(callback):当系统托盘图标被点击、双击、划过等交互动作时,触发回调函数 callback
示例代码

下面是一个简单的使用 PyQt5 创建系统托盘应用程序的示例代码:

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

class SystemTrayIcon(QSystemTrayIcon):
    def __init__(self, parent=None):
        super(SystemTrayIcon, self).__init__(parent)
        self.setToolTip('System Tray Icon Example')

        self.setIcon(QIcon('icon.png'))

        self.menu = QMenu()
        self.quit_action = self.menu.addAction('Quit')
        self.quit_action.triggered.connect(QApplication.quit)

        self.setContextMenu(self.menu)
    
    def activated_callback(self, reason):
        if reason == self.Trigger:
            print('System Tray Icon is clicked')

if __name__ == '__main__':
    app = QApplication(sys.argv)

    system_tray_icon = SystemTrayIcon()
    system_tray_icon.show()

    sys.exit(app.exec_())

在上面的示例代码中,我们继承了 QSystemTrayIcon 类,并重写了它的 __init__ 方法,在其中设置了系统托盘图标的属性和菜单项。我们还定义了 activated_callback 方法,并在其内部判断了用户交互的方式,如果是点击事件,则输出一条信息。最后,我们创建了一个 QApplication 实例,并展示了 SystemTrayIcon 对象。

运行效果

运行上面的示例代码,我们得到的运行效果如下所示:

system_tray_icon_example.png

我们可以看到,在 Windows 的任务栏中,出现了一个被设置了图标和提示文本的应用程序。同时,当我们点击任务栏中的图标时,会输出一条信息,表示成功地响应了用户的交互操作。

结论

PyQt5 的 QSystemTrayIcon 类提供了一种快速创建系统托盘应用程序的方法。通过设置相应的属性和响应回调函数,我们可以构建出高效、易用、跨平台的小应用程序。