在两次更新utils._DATA之前,我有以下运行良好的代码。 Utils._DATA是字典。
class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
def __init__(self, icon, parent=None):
super(SystemTrayIcon, self).__init__(parent)
self.parent = parent
QtWidgets.QSystemTrayIcon.__init__(self, icon, self.parent)
self.menu = QtWidgets.QMenu(parent)
self.actions = {}
self.Update()
def Update(self):
self.menu.clear()
self.actions.clear()
for key in utils._DATA:
self.actions[key] = self.menu.addAction(key)
self.actions[key].triggered.connect(partial(utils.copy, key))
self.setContextMenu(self.menu)
但是,如果我在编辑utils._DATA(第二次,第三次等)后调用self.Update(),则QAction存在,但是什么也不做。
如何使用工作中的QAction更新QMenu?
下一个是Utils.copy:
def copy(identificator):
try:
clipboard.copy(_DATA[identificator])
return 0
except:
raise Exception('Cannot copy to clipboard')
我正在更新_DATA = load(),其中load()读取特定文件并将其转换为dict。所以简单来说就是
_DATA[file.readline()] = some_string
更新数据效果很好,即使我的QMenu中的QActions更新也很好,但它们的触发器却无济于事!