PythonQT,QMenu更新QActions

时间:2019-11-06 08:46:58

标签: python qt qmenu qaction pythonqt

在两次更新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更新也很好,但它们的触发器却无济于事!

0 个答案:

没有答案