gpt4 book ai didi

python - Qt QSystemTrayIcon 更改菜单项

转载 作者:太空宇宙 更新时间:2023-11-03 19:22:09 24 4
gpt4 key购买 nike

我正在使用 Pyqt,但是 C++ 代码很好。我正在尝试使用 Linux (Ubuntu 11.10) 中的 QT 框架更改 QSystemTrayIcon 中的菜单项。目前我已尝试重置我最初设置的 QMenu:

self.tray = QSystemTrayIcon()
m = QMenu()
m.addAction('First')
m.addAction('Second')
tray.setContextMenu(m)

我将其放在我的类中并将托盘设为类变量。我在想,如果我只是更改托盘来设置新菜单,它就会更新:

new_m = QMenu()
new_m.addAction('First')
new_m.addAction('Third')
self.tray.setContextMenu(new_m)

但是这不起作用,托盘菜单仍然与最初制作的相同。我怎样才能重建菜单来更改它?

最佳答案

我使用以下代码进行了测试,它似乎工作正常:

from PyQt4.QtGui import *
import sys

class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()

self.tray = QSystemTrayIcon(QApplication.style().standardIcon(QStyle.SP_DriveDVDIcon), self)
m = QMenu()
m.addAction('First')
m.addAction('Second')
self.tray.setContextMenu(m)
self.tray.show()

p = QPushButton("test", self)
self.setCentralWidget(p)
p.clicked.connect(self.onClick)

def onClick(self):
new_m = QMenu()
new_m.addAction('First')
new_m.addAction('Third')
self.tray.setContextMenu(new_m)

app = QApplication(sys.argv)
w = MainWindow()
w.show();
sys.exit(app.exec_())

您确定只有一个 QSystemTrayIcon 对象吗? (在您的代码片段中,同时存在 self.traytray)。

关于python - Qt QSystemTrayIcon 更改菜单项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9338196/

24 4 0