Python 为什么可以';我不能打包这个Tkinter菜单小部件吗?

Python 为什么可以';我不能打包这个Tkinter菜单小部件吗?,python,xml,tkinter,Python,Xml,Tkinter,我正在Tkinter中构建一个GUI作为我的应用程序的一部分,我已经编写了一个类“XMLMenu”,它是“Menu”的子类,但是当我尝试打包它时,我收到了一个错误。下面是它的样子: class XMLMenu(Menu): def __init__(self,master,text, **kw): Menu.__init__(self,master, kw) #Irrelevent code in which I read an XML file to b

我正在Tkinter中构建一个GUI作为我的应用程序的一部分,我已经编写了一个类“XMLMenu”,它是“Menu”的子类,但是当我尝试打包它时,我收到了一个错误。下面是它的样子:

class XMLMenu(Menu):
    def __init__(self,master,text, **kw):
        Menu.__init__(self,master, kw)
        #Irrelevent code in which I read an XML file to build the menu
        self.pack(side=TOP,fill=X)
我收到了以下错误:

Traceback (most recent call last):
  File "E:\Portable Python 2.7.3.1\App\lib\threading.py", line 551, in __bootstrap_inner
    self.run()
  File "E:\Portable Python 2.7.3.1\App\lib\threading.py", line 504, in run
    self.__target(*self.__args, **self.__kwargs)
  File "xlistr\gui.py", line 62, in create
    app=constructor(root)
  File "xlistr\gui.py", line 84, in __init__
    self.menu=xmlMenu_by_filename(self,"xlistr/data/feMenu.xml")
  File "xlistr\gui.py", line 23, in xmlMenu_by_filename
    return XMLMenu(master,read_file(filename))
  File "xlistr\gui.py", line 52, in __init__
    self.pack(side=TOP,fill=X)
  File "E:\Portable Python 2.7.3.1\App\lib\lib-tk\Tkinter.py", line 1806, in pack_configure
    + self._options(cnf, kw))
TclError: can't pack ".26194928.31816720": it's a top-level window

菜单不是与几何图形管理器一起放置的,而是在相应的窗口中配置的:

class XMLMenu(Menu):
    def __init__(self,master,text, **kw):
        Menu.__init__(self, master, kw)
        master.config(menu=self)
        # ...

我修正了你的压痕。请检查一下,确保我做到了properly@user1472751
master
是一个不同于
Tk
top-level
的小部件吗?在这种情况下,您不能这样做。master是Frame的子类。所以我想不是。@user1472751那么您必须在包装该框架的窗口中配置它(即
master.winfo\u toplevel().config(menu=self)