gpt4 book ai didi

python - QT 系统托盘应用程序中的更新菜单

转载 作者:太空宇宙 更新时间:2023-11-03 11:29:30 25 4
gpt4 key购买 nike

我需要更新系统托盘应用程序的现有菜单项。起初,当应用程序加载时,将有两个菜单项。稍后当我单击一个按钮时,这些菜单项需要替换为新的菜单项。我怎样才能做到这一点?这是我的代码。

from PySide.QtGui import *
import sys

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

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

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

def onClick(self):
self.m.clear()
self.m.addAction('First')
self.m.addAction('Third')
self.tray.setContextMenu(self.m)

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

但是这不起作用。如果我尝试删除 self.m.clear(),新菜单项将附加到现有菜单项(在这种情况下这是正常行为)。是不是 menu.clear() 清除了当前菜单并且应该在此处填充新菜单?

我看过类似的问题Qt QSystemTrayIcon change menu items该解决方案对我不起作用。我正在运行 Ubuntu 14.04。

最佳答案

我明白了,问题出在 self.tray.setContextMenu(self.m) 上。从 onClick 方法中删除这一行。这在 Ubuntu 上应该可以正常工作。

关于python - QT 系统托盘应用程序中的更新菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24848175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com