方法来源,膜拜大佬 Python:PyQt 系统托盘_lianback的博客-CSDN博客 https://blog.csdn.net/lianback/article/details/79614771
第一步,添加不关闭代码
添加一行代码 app.setQuitOnLastWindowClosed(False) # 最小化托盘用
第二步,添加相关包
from PyQt5.QtWidgets import QSystemTrayIcon, QAction from PyQt5.QtWidgets import QMenu from PyQt5.QtGui import QIcon
第三步,添加最小化托盘的代码
1.代码位置
2.代码内容
# -------------------- 托盘开始 ---------- # 在系统托盘处显示图标 w=main_form tp = QSystemTrayIcon(w) tp.setIcon(QIcon('D:/图片/刘亦菲/liuyuifeipic.jpg')) # 设置系统托盘图标的菜单 a1 = QAction('&显示(Show)', triggered=w.show) def quitApp(): w.show() # w.hide() #隐藏 re = QMessageBox.question(w, "提示", "退出系统", QMessageBox.Yes | QMessageBox.No, QMessageBox.No) if re == QMessageBox.Yes: # 关闭窗体程序 QCoreApplication.instance().quit() # 在应用程序全部关闭后,TrayIcon其实还不会自动消失, # 直到你的鼠标移动到上面去后,才会消失, # 这是个问题,(如同你terminate一些带TrayIcon的应用程序时出现的状况), # 这种问题的解决我是通过在程序退出前将其setVisible(False)来完成的。 tp.setVisible(False) a2 = QAction('&退出(Exit)', triggered=quitApp) # 直接退出可以用qApp.quit tpMenu = QMenu() tpMenu.addAction(a1) tpMenu.addAction(a2) tp.setContextMenu(tpMenu) # 不调用show不会显示系统托盘 tp.show() # 信息提示 # 参数1:标题 # 参数2:内容 # 参数3:图标(0没有图标 1信息图标 2警告图标 3错误图标),0还是有一个小图标 tp.showMessage('tp', 'tpContent', icon=0) def message(): print("弹出的信息被点击了") tp.messageClicked.connect(message) def act(reason): # 鼠标点击icon传递的信号会带有一个整形的值,1是表示单击右键,2是双击,3是单击左键,4是用鼠标中键点击 if reason == 2 or reason == 3: w.show() # print("系统托盘的图标被点击了") tp.activated.connect(act) # -------------------- 托盘结束 ----------