PythonQT, QMenu обновление QActions - PullRequest
1 голос
/ 06 ноября 2019

У меня есть следующий код, который работал хорошо, прежде чем я дважды обновил 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)

Но если я вызываю self.Update () после редактирования utils._DATA (второй, третий раз и т. Д.), QActions существуют, но ничего не делают.

Какя могу обновить QMenu с рабочими QActions в нем?

Utils.copy следующий:

def copy(identificator):
    try:
        clipboard.copy(_DATA[identificator])
        return 0
    except:
        raise Exception('Cannot copy to clipboard')

Я обновляю как _DATA = load (), где load () читает конкретный файл ипреобразовать его в диктовку. Так что в простом виде это

_DATA[file.readline()] = some_string

Обновление данных работает хорошо, даже QActions в моем обновлении QMenu хорошо, но их триггер ничего не делает!

...