pack() and the division of vertical space
christopherlmarshall at yahoo.com
christopherlmarshall at yahoo.com
Fri Jun 1 09:51:00 EDT 2007
On Jun 1, 3:13 am, "Eric Brunel" <see.signat... at no.spam> wrote:
> On Thu, 31 May 2007 19:45:04 +0200, christopherlmarsh... at yahoo.com
>
> <christopherlmarsh... at yahoo.com> wrote:
> > I am trying to figure out how to stack two widgets in a frame
> > vertically so that they both expand horizontally and during vertical
> > expansion, the top one sticks to the top of the frame and the bottom
> > one consumes the remaining vertical space. I thought this would do it
> > but it doesn't. What am I missing?
>
> [snip code]
>
> For this kind of stuff, don't use pack; use grid. It will be far easier to
> get it working, to read afterwards and to maintain, even if it's slightly
> more verbose. IMHO, pack should only be used to create rows or columns of
> widgets, without any resizing policy, or to put an entire widget into a
> container. If you do anything more complicated than that, you'll find grid
> much easier to handle.
>
> HTH
> --
> python -c "print ''.join([chr(154 - ord(c)) for c in
> 'U(17zX(%,5.zmz5(17l8(%,5.Z*(93-965$l7+-'])"
Thanks, I basically came to the same conclusion shortly after writing
my post. I got it working with grid like this:
from Tkinter import *
class AFrame(Frame):
def __init__(self,master,**config):
Frame.__init__(self,master,config)
top= self.winfo_toplevel()
top.columnconfigure(0,weight=1)
top.rowconfigure(0,weight=1)
self.grid(row=0,column=0,sticky="NEWS")
self.rowconfigure(0,weight=0)
self.rowconfigure(1,weight=1)
self.columnconfigure(0,weight=1)
self.l1= Label(self,text="abc",relief="groove")
self.l1.grid(row=0,column=0,sticky="NEW")
self.l2= Label(self,text="abc",relief="groove")
self.l2.grid(row=1,column=0,sticky="NEWS")
af= AFrame(None)
mainloop()
More information about the Python-list
mailing list