Tkinter Problem
Peter Otten
__peter__ at web.de
Sun Oct 24 06:36:33 EDT 2004
Maboroshi wrote:
> Why when I use the sticky command with the grid layout manager won't my
> Listbox expand it stays in the center maybe I am missing something but
> from every tutorial I see it says to do it this way
>
> I am running Python2.3.4 on winxp I haven't tried it on linux yet
>
> Any Ideas are appreciated
>
> Let me know if I am not being clear enough
>
> Cheers
>
> Andrew
>
>
> from Tkinter import *
>
>
> class App(Frame):
> def __init__(self, master=None):
> Frame.__init__(self, master)
Remove
> self.grid()
This means you have an additional grid containing a single control (the
Frame). Use a packer instead and make sure it consumes any extra space:
self.pack(fill=BOTH, expand=True)
> self.createWidgets()
>
> def createWidgets(self):
> self.listbox = Listbox(self)
> # RIGHT HERE THIS WON'T EXPAND TO FILL
> self.listbox.grid(row=0, column=0, rowspan=3, sticky=N+E+S+W)
You can configure the cell (0, 0) to consume any extra space:
self.rowconfigure(0, weight=1)
self.columnconfigure(0, weight=1)
>
> self.connect = Button(self, text="Connect")
> self.connect.grid(row=0, column=1)
> self.execute = Button(self, text="Execute")
> self.execute.grid(row=1, column=1)
> self.disconnect = Button(self, text="Disconnect")
> self.disconnect.grid(row=2, column=1)
>
> self.entry = Entry(self)
> self.entry.grid(row=3, column=0, columnspan=2, sticky=E+W)
>
>
> app = App()
> app.master.title("MySQL DB Project")
> app.master.minsize(400, 300)
> app.mainloop()
The Entry and Listbox widgets should grow now as expected. To distribute the
Buttons smoothly, you can either set the weight of columns 1 and 2 or put
all three of them in an extra Frame (which I would prefer).
Peter
More information about the Python-list
mailing list