设置一个从托盘图标启动不同应用程序的工具包,我需要能够打开配置窗口,然后在不关闭整个应用程序的情况下关闭它。
import sys
from PyQt5.QtWidgets import QSystemTrayIcon, QApplication, QMenu, qApp, QMainWindow, QPushButton, QLabel, QLineEdit
from PyQt5.QtGui import QIcon
from PyQt5 import QtCore
class autoparse():
def __init__(self):
self.main()
def main(self):
app = QApplication(sys.argv)
self.trayIcon = QSystemTrayIcon(QIcon("icons\icon-windowed.ico"), app)
self.menu = QMenu()
self.trayIcon.setContextMenu(self.menu)
self.autopconfig = self.menu.addAction('Config')
self.autopconfig.triggered.connect(self.configwindow)
exitaction = self.menu.addAction("Exit")
exitaction.triggered.connect(qApp.quit)
self.trayIcon.show()
sys.exit(app.exec_())
def configwindow(self):
try:
self.config = QMainWindow()
self.config.setWindowTitle('Configuration')
self.config.setGeometry(300, 300, 640, 480)
self.lbl = QLabel('Directory: ', self.config)
self.lbl.setGeometry(QtCore.QRect(10, 20, 200, 20))
self.pathsel = QLineEdit(self.config)
self.pathsel.setMaxLength(250)
self.pathsel.setText('path here')
# self.pathsel.selectAll()
self.pathsel.setGeometry(QtCore.QRect(10, 50, …Run Code Online (Sandbox Code Playgroud) import sys
from PyQt5.QtWidgets import QSystemTrayIcon, QApplication, QMenu
from PyQt5.QtGui import QIcon
class autoparse():
def __init__(self):
self.main()
def main(self):
app = QApplication(sys.argv)
self.trayIcon = QSystemTrayIcon(QIcon("icons\icon-windowed.ico"), app)
self.menu = QMenu()
self.autopconfig = self.menu.addAction('Config')
self.autopconfig.triggered.connect(self.swapicon)
self.trayIcon.setContextMenu(self.menu)
self.trayIcon.show()
sys.exit(app.exec_())
def swapicon(self):
QSystemTrayIcon.setIcon(QIcon("icons\python.ico"))
test1 = autoparse()
Run Code Online (Sandbox Code Playgroud)
我可以让初始图标设置得很好,我可以通过为应用程序创建 2 个图标然后执行 self.trayIcon.hide() 和 self.newicon.show() 来解决这个问题,但我不认为这是正确的方法。
Pycharm 显示一条通知,上面写着“预期的 QSystemTrayIcon,获得了 QIcon”,但如果我QIcon与之交换QSystemTrayIcon,则它会说Qicon丢失。SOOOOOO 我将其更改为QSystemTrayIcon(QIcon("icons\python.ico"),但它仍然显示QIcon未填充。问题检测似乎一直在循环。
当我运行 swapicon 函数时,按原样运行代码会给出“setIcon (self, QIcon): unbound 方法的第一个参数必须具有类型 'QSystemTrayIcon'”。如果我删除 QIcon,使其只是 setIcon(文件),那么我会得到“setIcon(self,QIcon):没有足够的参数”
使用 Kubuntu 18.04 (qt5 5.9.5)、Python 3.6。我无法让此代码显示托盘图标;显示了其他图标,例如 Dropbox 等,但不是:
import sys
from PyQt5.QtWidgets import QApplication, QMenu, QSystemTrayIcon, qApp, QMessageBox
from PyQt5.QtGui import QIcon
def run_something():
print("Running something...")
if __name__ == '__main__':
print("Creating application...")
app = QApplication(sys.argv)
print("Creating menu...")
menu = QMenu()
checkAction = menu.addAction("Check Now")
checkAction.triggered.connect(run_something)
quitAction = menu.addAction("Quit")
quitAction.triggered.connect(qApp.quit)
print("Creating icon...")
icon = QIcon.fromTheme("system-help")
print("Creating tray...")
trayIcon = QSystemTrayIcon(icon, app)
trayIcon.setContextMenu(menu)
print("Showing tray...")
trayIcon.show()
trayIcon.setToolTip("unko!")
trayIcon.showMessage("hoge", "moge")
print("Running application...")
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
显示了消息(“hoge”,“moge”),但我在任何地方都找不到该图标......正如其他帖子所说,在左上角都找不到。