方法來源,膜拜大佬 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) # -------------------- 托盤結束 ----------