Dear tkinter-discuss,

  I'm trying to make a user interface like the following:

::::::::::::::::::::::::::::::::::::::::::::
:              XXXXXXXXXXXXXX              :  <- a Label
:[  <-- expands      ][      expands -->  ]:  <- 2 Entries
:[  <-- expands      ][      expands -->  ]:  <- 2 more Entries
:                                          :
:           (empty space expands           :
:                downward)                 :
:..........................................:

  Pseudo-code (full code at end of document):

toplevel
  "XXXXXXXXXXXXXX" label anchor=n pack
  frame expand=1 fill=x anchor=n pack
    entry expand=1 fill=x anchor=n lpack
    entry expand=1 fill=x anchor=n lpack

  frame expand=1 fill=x anchor=n pack
    entry expand=1 fill=x anchor=n lpack
    entry expand=1 fill=x anchor=n lpack

  frame expand=1 fill=both anchor=n pack


  What I'm finding is this:

  1. the label (XXXXXXXXXXXXXX) hugs the top of the window
     (GOOD)

  2. the top two entries hug the label
     (GOOD)

  3. the lower two entries space a ways away from the top two entries
     (DO NOT WANT)

     What I want instead, is that the lower two entries hug the top two
     entries.

     (More deeply: I want to UNDERSTAND why this is happening like this.
      I could use a grid and that would solve this problem, but I want to
      have facility with the packer, too.)

  I've tried changing around the values a bunch, but I just don't have
  any luck getting this to work.

  My assumption (that seems to be flawed) is that when I set expand=1,
  that if it says "fill=x", then that means that it will ONLY expand
  horizontally.  But it seems to be expanding in both directions.

  Thoughts?  Insights?


== Full Example (Python 3.2) ==

from tkinter import *

t = Toplevel()

lbl = Label(t, text="XXXXXXXXXXX")
lbl.pack(side=TOP, anchor=N)

f1 = Frame(t)
f1.pack(side=TOP, expand=1, fill=X, anchor=N)

e11 = Entry(f1)
e11.pack(side=LEFT, expand=1, fill=X, anchor=N)
e12 = Entry(f1)
e12.pack(side=LEFT, expand=1, fill=X, anchor=N)

f2 = Frame(t)
f2.pack(side=TOP, expand=1, fill=X, anchor=N)

e21 = Entry(f2)
e21.pack(side=LEFT, expand=1, fill=X, anchor=N)
e22 = Entry(f2)
e22.pack(side=LEFT, expand=1, fill=X, anchor=N)

# This last one seems to do nothing.
# My hope was that it would somehow "pressure" f2 higher, but nope.

f3 = Frame(t)
f3.pack(side=TOP, expand=1, fill=X, anchor=N)
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to