如何解决如何从功能 QSystemTrayIcon 向上下文菜单添加操作
我尝试在 PySide6 文档中搜索有关 QMenu 和 QSystemTray 类的信息,但我无法找到任何有关从函数向上下文菜单添加操作的信息。这是我尝试过的代码:
from PySide6.QtWidgets import QSystemTrayIcon,QMenu
from PySide6 import QtWidgets
from PySide6.QtGui import QIcon,QAction
import sys
class MyWidget(QtWidgets.QSystemTrayIcon):
def __init__(self):
super().__init__()
self.trayIcon = QSystemTrayIcon()
self.trayIcon.setIcon(QIcon("icon.png"))
self.trayIcon.setVisible(True)
self.menu = QMenu()
self.quit = QAction("Quit")
self.quit.triggered.connect(app.quit)
self.menu.addAction(self.quit)
self.menu.updatesEnabled()
self.menu.setUpdatesEnabled(True)
self.trayIcon.setContextMenu(self.menu)
self.trayIcon.activated.connect(self.addMenuAction)
def addMenuAction(self):
self.menu.addAction(QAction("Action"))
self.menu.update()
if __name__ == "__main__":
app = QtWidgets.QApplication([])
widget = MyWidget()
widget.show()
sys.exit(app.exec_())
解决方法
问题是您创建的 QAction 没有所有权,因此它会立即被销毁,因为它是一个局部变量。有两个选项:
action = QAction("Action",self)
self.menu.addAction(action)
或
action = self.menu.addAction("Action")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。