pyqt5 系统托盘(信息传递)
2019-10-08 python 2134
独立窗口托盘
import sys from PyQt5.QtWidgets import QSystemTrayIcon,qApp,QAction,QMenu#,QMessageBox from PyQt5.QtGui import QIcon class SystemTray(object): # 程序托盘类 def __init__(self, w,app): self.app = app self.w = w # QApplication.setQuitOnLastWindowClosed(False) # 禁止默认的closed方法,只能使用qapp.quit()的方法退出程序 self.w.show() # 不设置显示则为启动最小化到托盘 self.tp = QSystemTrayIcon(self.w) self.initUI() self.run() def initUI(self): # 设置托盘图标 self.tp.setIcon(QIcon('./logo11.ico')) def quitApp(self): self.tp.setVisible(False) # 隐藏托盘控件,托盘图标刷新不及时,提前隐藏 qApp.quit() # 退出程序 sys.exit(0) # 退出程序 # self.w.show() # w.hide() #设置退出时是否显示主窗口 # re = QMessageBox.question(self.w, "提示", "退出系统", QMessageBox.Yes | # QMessageBox.No, QMessageBox.No) # if re == QMessageBox.Yes: # self.tp.setVisible(False) # 隐藏托盘控件,托盘图标刷新不及时,提前隐藏 # qApp.quit() # 退出程序 def message(self): # 提示信息被点击方法 print("弹出的信息被点击了") def act(self, reason): # 主界面显示方法 # 鼠标点击icon传递的信号会带有一个整形的值,1是表示单击右键,2是双击,3是单击左键,4是用鼠标中键点击 #if reason == 2 or reason == 3: if reason == QSystemTrayIcon.DoubleClick: if self.w.isHidden(): self.w.show() else: self.w.hide() def run(self): a1 = QAction('&显示(Show)', triggered=self.w.show) a2 = QAction('&退出(Exit)', triggered=self.quitApp) tpMenu = QMenu() tpMenu.addAction(a1) tpMenu.addAction(a2) self.tp.setContextMenu(tpMenu) self.tp.show() # 不调用show不会显示系统托盘消息,图标隐藏无法调用 # 信息提示 # 参数1:标题 # 参数2:内容 # 参数3:图标(0没有图标 1信息图标 2警告图标 3错误图标),0还是有一个小图标 # self.tp.showMessage('Hello', '您使用了托盘', icon=0) # 绑定提醒信息点击事件 self.tp.messageClicked.connect(self.message) # 绑定托盘菜单点击事件 self.tp.activated.connect(self.act) sys.exit(self.app.exec_()) # 持续对app的连接
其他窗口托盘
import sys from PyQt5.QtWidgets import QSystemTrayIcon,qApp,QAction,QMenu#,QMessageBox from PyQt5.QtGui import QIcon class SystemTray(object): # 程序托盘类 def __init__(self, w,app): self.app = app self.w = w # QApplication.setQuitOnLastWindowClosed(False) # 禁止默认的closed方法,只能使用qapp.quit()的方法退出程序 self.w.show() # 不设置显示则为启动最小化到托盘 self.tp = QSystemTrayIcon(self.w) self.initUI() self.run() def initUI(self): # 设置托盘图标 self.tp.setIcon(QIcon('./logo_64.ico')) def quitApp(self): self.tp.setVisible(False) # 隐藏托盘控件,托盘图标刷新不及时,提前隐藏 qApp.quit() # 退出程序 sys.exit(0) # 退出程序 # self.w.show() # w.hide() #设置退出时是否显示主窗口 # re = QMessageBox.question(self.w, "提示", "退出系统", QMessageBox.Yes | # QMessageBox.No, QMessageBox.No) # if re == QMessageBox.Yes: # self.tp.setVisible(False) # 隐藏托盘控件,托盘图标刷新不及时,提前隐藏 # qApp.quit() # 退出程序 def message(self): # 提示信息被点击方法 print("弹出的信息被点击了") def act(self, reason): # 主界面显示方法 # 鼠标点击icon传递的信号会带有一个整形的值,1是表示单击右键,2是双击,3是单击左键,4是用鼠标中键点击 #if reason == 2 or reason == 3: if reason == QSystemTrayIcon.DoubleClick: if self.w.winState: self.w.sendInfo("hide") else: self.w.sendInfo("show") def run(self): a1 = QAction('&显示(Show)', triggered=lambda :self.w.sendInfo("show")) a2 = QAction('&退出(Exit)', triggered=self.quitApp) tpMenu = QMenu() tpMenu.addAction(a1) tpMenu.addAction(a2) self.tp.setContextMenu(tpMenu) self.tp.show() # 不调用show不会显示系统托盘消息,图标隐藏无法调用 # 信息提示 # 参数1:标题 # 参数2:内容 # 参数3:图标(0没有图标 1信息图标 2警告图标 3错误图标),0还是有一个小图标 # self.tp.showMessage('Hello', '您使用了托盘', icon=0) # 绑定提醒信息点击事件 self.tp.messageClicked.connect(self.message) # 绑定托盘菜单点击事件 self.tp.activated.connect(self.act) sys.exit(self.app.exec_()) # 持续对app的连接
很赞哦! (0)
相关文章
文章评论
-
-
-
0条评论