使用copy.deepcopy在嵌套字典中获取QMenu.title()时出现RuntimeError

时间:2019-03-12 21:36:31

标签: python pyqt4 qmenu

我正在尝试使用copy.deepcopy将字典(从另一个类/文件)复制到变量中,以使原始字典内容不会受到影响。

最初,我使用.copy()可以实现我的目的,但实际上它实际上影响了我从其复制的字典中的内容。发现copy.deepcopy可以代替但这次,我遇到另一个错误-# RuntimeError: '__init__' method of object's base class (QMenu) not called.

我要在这里实现的目的是使QMenu对象命名(例如,位于0x7f142bd582d8的QtGui.QMenu对象)符合人类可读的形式。

这是我的代码:

names_copy = copy.deepcopy(self.database.menus)
# This will affects content in self.database.menus
# names_copy = self.database.menus.copy()

# self.database.menus is of the following:
# defaultdict(<type 'dict'>, {0: {<QtGui.QMenu object at 0x7f142bd582d8>: ['Jack', 'Peter']}})

new_names_copy = {}
for k1, v1 in self.names_copy:
    for k2, v2 in v1.items():

       # Errors at the following line:
       # RuntimeError: '__init__' method of object's base class (QMenu) not called.
        names_copy[k1][k2] = names_copy[k1][k2]

        # Remove the dict of the QMenu object naming
        names_copy[k1].pop(k2)

print names_copy
# Expected Output: {0: {'Names': ['Jack', 'Peter']}})

在此先感谢您的答复!

0 个答案:

没有答案