On Thu, 01 Mar 2007 22:35:40 +0100, James Stroud <[EMAIL PROTECTED]> wrote: > Gigs_ wrote: >> class MenuDemo(Frame): >> def __init__(self, parent=None): >> Frame.__init__(self, parent) >> self.pack(expand=YES, fill=BOTH) >> self.createWidgets() >> def createWidgets(self): >> self.makeMenuBar() >> self.makeToolBar() >> L = Label(self, text='Menu and Toolbar demo') >> L.config(relief=SUNKEN, width=40, height=10, bg='white') >> L.pack(expand=YES, fill=BOTH) >> def makeMenuBar(self): >> self.menubar = Menu(self.master) #here >> self.master.config(menu=self.menubar) #here >> self.fileMenu() >> self.editMenu() >> self.imageMenu() >> why i need to use self.master? >> why i cant just use self? >> thx > > master is a reference to a Tk() or Toplevel(). Frames do not contain > menus, but the windows that contain them do.
This is the main reason why I always rant about examples of Tkinter programming creating windows by sub-classing Frame: frames are not windows. If you want to create a window, sub-class Toplevel (or Tk), not Frame. A frame is a general-purpose container. It can be sub-classed to create new "mega-widgets" that can be used in any context. This is obviously not the case in the code above, as the parent passed to any instance of MenuDemo *must* be a Toplevel or Tk. So just write: class MenuDemo(Toplevel): def __init__(self): Toplevel.__init__(self) ... def makeMenuBar(self): self.menubar = Menu(self) self.config(menu=self.menubar) ... and your life will be easier ;-) HTH -- python -c "print ''.join([chr(154 - ord(c)) for c in 'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])" -- http://mail.python.org/mailman/listinfo/python-list