PyQt 系统托盘设计

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()        

猜你喜欢

转载自www.cnblogs.com/wangyueyouyi/p/9999214.html
今日推荐