pack() and the division of vertical space

christopherlmarshall at christopherlmarshall at
Fri Jun 1 15:51:00 CEST 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  
> <christopherlmarsh... at> 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.
> --
> 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):
      top= self.winfo_toplevel()
      self.l1= Label(self,text="abc",relief="groove")
      self.l2= Label(self,text="abc",relief="groove")

af= AFrame(None)

More information about the Python-list mailing list