On Jul 30, 8:24 am, "Hamilton, William " <[EMAIL PROTECTED]> wrote: > > From: Jim > > Hi, > > I'm looking at page 548 of Programming Python (3rd Edition) by Mark > > Lutz. > > The following GUI script works with no problem, i.e., the rows and > > columns expand: > > ================================================================= > > # Gridded Widgets Expandable page 548 > > > from Tkinter import * > > colors = ["red", "white", "blue"] > > > def gridbox(root): > > Label(root, text = 'Grid').grid(columnspan = 2) > > r = 1 > > for c in colors: > > l = Label(root, text=c, relief=RIDGE, width=25) > > e = Entry(root, bg=c, relief=SUNKEN, width=50) > > l.grid(row=r, column=0, sticky=NSEW) > > e.grid(row=r, column=1, sticky=NSEW) > > root.rowconfigure(r, weight=1) > > r += 1 > > root.columnconfigure(0, weight=1) > > root.columnconfigure(1, weight=1) > > > root = Tk() > > gridbox(Toplevel(root)) > > Button(root, text="Quit", command=root.quit).grid() > > mainloop() > > ================================================================= > > However, the following GUI script using class does not expand rows and > > columns: > > ================================================================= > > # Gridded Widgets Expandable 2 > > > from Tkinter import * > > colors = ["red", "white", "blue"] > > > class GUI(Frame): > > def __init__(self,master): > > Frame.__init__(self,master) > > self.grid() > > self.gridbox() > > > def gridbox(self): > > Label(self, text = 'Grid').grid(columnspan = 2) > > r = 1 > > for c in colors: > > l = Label(self, text=c, relief=RIDGE, width=25) > > e = Entry(self, bg=c, relief=SUNKEN, width=50) > > l.grid(row=r, column=0, sticky=NSEW) > > e.grid(row=r, column=1, sticky=NSEW) > > self.rowconfigure(r, weight=1) > > r += 1 > > self.columnconfigure(0, weight=1) > > self.columnconfigure(1, weight=1) > > > root = Tk() > > root.title("Gridded Widgets Expandable") > > app = GUI(root) > > Button(root, text="Quit", command=root.quit).grid() > > root.mainloop() > > ================================================================= > > What am I missing? > > In the first, your gridbox has Toplevel(root) as its master, causing it > to be created in a new window. In the second, it has Frame(root) as its > master, which does not create a new window. Changing Frame to Toplevel > in the class statement and the call to __init__ causes them to act > identically. > > -- > -Bill Hamilton- Hide quoted text - > > - Show quoted text -
Thank you Bill Hamilton. -- http://mail.python.org/mailman/listinfo/python-list