PythonQT,QMenu更新操作

在更新两次之前,我的下一个代码运行良好。 Utils._DATA是字典。

class SystemTrayIcon(QtWidgets.QSystemTrayIcon):
def __init__(self,icon,parent=None):
    super(SystemTrayIcon,self).__init__(parent)

    self.parent = parent
    QtWidgets.QSystemTrayIcon.__init__(self,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存在但不执行任何操作。

在这种情况下:

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( lambda _: utils.copy(key) )

键始终是每个Qaction中字典中的最后一个元素。如何在其中包含有效的Qaction的情况下更新QMenu?

下一个是Utils.copy:

def copy(identificator):
    try:
        clipboard.copy( _DATA[identificator] )
        return 0
    except:
        raise Exception('Cannot copy to clipboard')
jyw114 回答:PythonQT,QMenu更新操作

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3160331.html

大家都在问