Python 如何使用Tkinter菜单插入\u级联

Python 如何使用Tkinter菜单插入\u级联,python,tkinter,Python,Tkinter,我想使用insert_cascade()方法在给定索引处插入菜单。据我所知,它采用的参数与add_cascade()方法加上要插入位置的整数索引号相同。但我不能让它工作,我得到下面的错误 File "/usr/lib64/python3.7/tkinter/__init__.py", line 2900, in insert_cascade self.insert(index, 'cascade', cnf or kw) TypeError: insert() takes from 1

我想使用insert_cascade()方法在给定索引处插入菜单。据我所知,它采用的参数与add_cascade()方法加上要插入位置的整数索引号相同。但我不能让它工作,我得到下面的错误

File "/usr/lib64/python3.7/tkinter/__init__.py", line 2900, in insert_cascade
    self.insert(index, 'cascade', cnf or kw)
TypeError: insert() takes from 1 to 2 positional arguments but 4 were given
我已经尝试过对索引进行编码,并使用与add_cascade()方法相同的参数,add_cascade()效果很好

这是电话

parent.insert_cascade(self.index, **self.opts) 
self.index
是一个
int
self.options
是一个
dict

class Menu(_MenuBase, tk.Menu):
    def __init__(self, parent, key, **data):
        _MenuBase.__init__(self, parent, key, **data)
        tk.Menu.__init__(self, parent)

        if self.inherit:
            self.cfg = {**parent.cfg, **self.cfg}

        self.config(**self.cfg)

        if self.index is not None:
            parent.insert_cascade(self.index, **self.opts)
        else:
            parent.add_cascade(**self.opts)

        self.opts['image'] = self.image_name

        for key, item in data.items():
            if isinstance(item, dict):
                if item['type'] in ('Menu', 'MenuItem', 'MenuSeparator', 'MenuCheckbutton', 'MenuRadiobutton'):
                    self.nodes[key] = globals()[item['type']](self, key, **item)

感谢所有回应的人。我发现了这个问题,并且知道为什么我的代码失败了。我正在处理的项目有点复杂,并且有多个文件中的代码,这显然是我不想在这里发布的原因。我将解释发生了什么,这样其他人可以从我的错误中获益

这是类定义类菜单(_MenuBase,tk.Menu)

正如您所看到的,我的类是另外两个类的子类“\u MenuBase,tk.Menu”。 在_MenuBase中,我有一个方法def insert(self,uri=None,**data)。
正是这种方法导致了命名冲突。我解决了这个问题,一切都很好。

显示这个问题的最小工作代码,这样我们就可以运行它。我添加了我的类来显示它的使用方式,就像我上面所说的add_cascade()工作。不要使用
**
来放置字典-因为它从字典中解压值并作为单独的参数放置。它适用于add_cascade(),我认为这不是问题所在。显示完整错误消息-它显示
insert()
,而不是
insert\u cascade()