QtGui.QSystemTrayIcon(),Qt中的托盘创建函数。即下图所示的东西:

大致可分为托盘样式设计和托盘点击事件设计。
1 托盘样式设计
#以下是我自定义的托盘设计函数
#托盘设计
def trayIcon(self):
#托盘
tuopan = QtGui.QSystemTrayIcon(self) #创建托盘
tuopan.setIcon(QtGui.QIcon(r':/0102.png')) #设置托盘图标
# 弹出的信息被点击就会调用messageClicked连接的函数
#tuopan.messageClicked.connect(self.message)
#托盘图标被激活
tuopan.activated.connect(self.iconActivated)
#设置提示信息
tuopan.setToolTip(u'我就是个托盘!')
#创建托盘的右键菜单
tpMenu = QtGui.QMenu()
a1 = QtGui.QAction(QtGui.QIcon('exit.png'), u'关于', self) #添加一级菜单动作选项(关于程序)
a1.triggered.connect(self.about)
a2 = QtGui.QAction(QtGui.QIcon('exit.png'), u'退出', self) #添加一级菜单动作选项(退出程序)
a2.triggered.connect(self.quit)
tpMenu.addAction(a1)
tpMenu.addAction(a2)
tuopan.setContextMenu(tpMenu) #把tpMenu设定为托盘的右键菜单
tuopan.show() #显示托盘
#托盘创建出来时显示的信息
tuopan.showMessage(u"标题", '托盘信息内容', icon=1) #icon的值 0没有图标 1是提示 2是警告 3是错误
上面的函数中,tuopan.showMessage一定要位于tuopan.show()函数之后,否则message的信息不会显示。下图为showMessage的样式:
函数中的a1、a2是右键菜单中的两个子项,如下图:
提示信息tuopan.setToolTip(u'我就是个托盘!')显示如下:
托盘要实现的效果是:点击“关闭”,窗口关闭、且系统状态栏不存在图标,只在系统托盘存在图标,类似微信。
实现的方式:重写closeEvent(self, event)函数(点击“关闭按钮时,响应的是closeEvent函数”),该函数调用时,隐藏主窗口。
#界面上关闭按钮
def closeEvent(self, event):
event.ignore() # 忽略关闭事件
self.hide() # 隐藏窗体
右键执行退出程序,调用的quit函数如下:
#从托盘退出
def quit(self):
app.exit()
#app即为整个项目的app,已被设置为全局变量
app = QtGui.QApplication(sys.argv)
2 托盘事件
#托盘图标事件
def iconActivated(self, reason):
if reason == QtGui.QSystemTrayIcon.DoubleClick: #双击 显示或隐藏窗口
self.a()
elif reason == QtGui.QSystemTrayIcon.Trigger: # 单击 #MiddleClick
中键双击
pass
#响应托盘双击,最大最小化界面
def a(self):
if self.isMinimized() or not self.isVisible():
#若是最小化,则先正常显示窗口,再变为活动窗口(暂时显示在最前面)
self.showNormal()
self.activateWindow()
else:
#若不是最小化,则最小化
self.showMinimized()