Pyqt5部分学习笔记5——程序最小化到托盘
作者:互联网
完全copy的这位前辈的代码:https://blog.csdn.net/marwenx/article/details/107200049
class TrayIcon(QtWidgets.QSystemTrayIcon):
def __init__(self,MainWindow,parent=None):
super(TrayIcon, self).__init__(parent)
self.ui = MainWindow # MainWindo是这个类里所需要传入的参数,即你程序的主窗体对象
self.createMenu()
def createMenu(self):
self.menu = QtWidgets.QMenu()
self.showAction1 = QtWidgets.QAction("启动", self, triggered=self.show_window)
self.showAction2 = QtWidgets.QAction("显示通知", self,triggered=self.showMsg)
self.quitAction = QtWidgets.QAction("退出", self, triggered=self.quit)
self.menu.addAction(self.showAction1)
self.menu.addAction(self.showAction2)
self.menu.addAction(self.quitAction)
self.setContextMenu(self.menu)
#设置图标
self.setIcon(QtGui.QIcon("c:\\My_World\\gitee_code\\qt_toolkit\\hello_world\\sys-user.png"))
self.icon = self.MessageIcon()
#把鼠标点击图标的信号和槽连接
self.activated.connect(self.onIconClicked)
def showMsg(self):
self.showMessage("Message", "skr at here", self.icon)
def show_window(self):
#若是最小化,则先正常显示窗口,再变为活动窗口(暂时显示在最前面)
self.ui.showNormal()
self.ui.activateWindow()
def quit(self):
QtWidgets.qApp.quit()
#鼠标点击icon传递的信号会带有一个整形的值,1是表示单击右键,2是双击,3是单击左键,4是用鼠标中键点击
def onIconClicked(self, reason):
if reason == 2 or reason == 3:
# self.showMessage("Message", "skr at here", self.icon)
if self.ui.isMinimized() or not self.ui.isVisible():
#若是最小化,则先正常显示窗口,再变为活动窗口(暂时显示在最前面)
self.ui.showNormal()
self.ui.activateWindow()
self.ui.setWindowFlags(QtCore.Qt.Window)
self.ui.show()
else:
#若不是最小化,则最小化
self.ui.showMinimized()
self.ui.setWindowFlags(QtCore.Qt.SplashScreen)
self.ui.show()
# self.ui.show()
使用的时候只需将上述TrayIcon类进行实例化,并传入主程序窗体的对象作为参数,然后在需要的时候调用show()方法以及quit()方法即可,例如在程序关闭的时候调用。
class BiZhi(QMainWindow):
def __init__(self):
super().__init__()
self.ui = Ui_Form()
self.ui.setupUi(self)
self.ms = MySignal()
...
self.tray_icon = TrayIcon(self) # 实例化最小化托盘对象
...
def closeEvent(self, event):
reply = QtWidgets.QMessageBox.question(self,
'退出提示',
"是否最小化至托盘?",
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
QtWidgets.QMessageBox.No)
if reply == QtWidgets.QMessageBox.Yes:
event.ignore()
self.hide()
self.tray_icon.show() # 显示最小化托盘图标
else:
self.tray_icon.quit() # 关闭并退出托盘对象
event.accept()
if __name__ == '__main__':
app = QApplication([])
mywin = BiZhi()
mywin.show()
app.exec()
标签:__,show,self,Pyqt5,QtWidgets,托盘,ui,最小化,def 来源: https://blog.csdn.net/qq_31761067/article/details/113782294