在我更新 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(),QActions 存在但什么也不做。
如何使用其中的工作 QActions 更新 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 更新也很好,但是它们的触发器什么也没做!