本文记录: 使用 PySide2 编写工具界面时,需要为工具创建系统托盘图标以及推送消息的方法。以方便用户对工具进行操作。
通过 PySide2 创建系统托盘,需要使用 PySide2.QtWidgets.QSystemTrayIcon 这个类。这个类中需要使用了以下常用方法,就可以创建最基本的系统托盘图标:
- QSystemTrayIcon 创建一个系统托盘对象
- QSystemTrayIcon.setContextMenu 添加右键菜单(QMenu)
- QSystemTrayIcon.showMessage 在右下角弹出要提示消息
- QObject.connect 连接信号和槽
使用上面的方法,可以完成:
- 在系统托盘中创建一个程序图标。
- 在程序创建完成托盘图标后,推送一条提示程序已经启动的系统消息。
- 鼠标点击图标时的左右键功能。
代码示例如下:
import sys
from PySide2.QtWidgets import QApplication, QAction, QMenu, QSystemTrayIcon
from PySide2.QtCore import SIGNAL, QObject
from PySide2.QtGui import QIcon
def close():
print("close")
def restart():
print("restart")
def show():
print("show")
app = QApplication(sys.argv)
exit = QAction(QIcon("E:/Python_study/startLauncher/Icon/Menu.ico"), "Exit", )
QObject.connect(exit, SIGNAL("triggered()"), close)
res = QAction(QIcon("E:/Python_study/startLauncher/Icon/Menu1.ico"), "Restart", )
QObject.connect(res, SIGNAL("triggered()"), restart)
menu = QMenu() # 创建菜单,添加菜单选项
menu.addAction(exit)
menu.addAction(res)
trayIcon = QSystemTrayIcon(QIcon("E:/Python_study/startLauncher/Icon/Menu4.ico")) # 创建系统托盘
trayIcon.setContextMenu(menu)
QObject.connect(trayIcon, SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), show)
trayIcon.show()
trayIcon.setToolTip("启动器")
trayIcon.showMessage("启动器已经启动!", "左击显示窗口\n右击显示菜单", QIcon("E:/Python_study/startLauncher/Icon/Menu_Note1.ico"))
sys.exit(app.exec_())
执行代码后,会在电脑桌面系统托盘创建一个本程序的图标,同时会推送一条启动信息,该信息会自动收回。
上面的代码没有判断点的是左还是右键,所以只要鼠标点击图标都会先打印一遍 “show”,请自行判断。