Gigs_ wrote: > Hi Im new to gui programming > > from Tkinter import * # get widget classes > from tkMessageBox import askokcancel # get canned std dialog > > class Quitter(Frame): # subclass our GUI > def __init__(self, parent=None): # constructor method > Frame.__init__(self, parent) > self.pack() > widget = Button(self, text='Quit', command=self.quit) > widget.pack(side=LEFT) > def quit(self): > ans = askokcancel('Verify exit', "Really quit?") > if ans: Frame.quit(self) > > class Demo(Frame): > def __init__(self, parent=None): > Frame.__init__(self, parent) > self.pack() > Label(self, text="Basic demos").pack() > for (key, value) in demos.items(): > func = (lambda key=key: self.printit(key)) > Button(self, text=key, command=func).pack(side=TOP, > fill=BOTH) > Quitter(self).pack() # here > def printit(self, name): > print name, 'returns =>', demos[name]() > > > My problem is in class Demo. How is the best way to use class Quitter in > class Demo? > should it be: > Quitter(self).pack() > Quitter(self) > ...
You are calling the Quitter's pack() method twice, once in Quitter.__init__() and then again in Demo.__init__(). I would remove the call in Quitter.__init__(). If you do that you can use your Quitter class with other layout managers which require other configuration methods, e. g. Quitter(...).grid(...). Peter -- http://mail.python.org/mailman/listinfo/python-list