On Wednesday 12 September 2007 13:22, Simon Forman wrote: > Hi all, > > I realize this is more of a Tk question than a python one, but > since I'm using python and don't know Tcl/Tk I figured I'd ask here > first before bugging the Tcl folks. > > I am having a terrible time trying to get a pack() layout working. > > I have three frames stacked top to bottom and stretching across the > master window from edge to edge. > > Crude ASCII Art rendition of the frames: > > ============ > > | header | > > ------------ > > | body | > > ------------ > > | log | > > ============ > > > I want the header and log frames to have a fixed height (and stick > to the top and bottom, respectively, of the master frame) and the > body frame to expand to fill the rest of the space, for instance if > the window is maximized. > > Here is a simple script that /almost/ does what I want. I've been > tweaking the pack() options for three hours and I just can't seem > to get the effect I want. This /can't/ really be this hard can it? > > If you run the script, be aware that since there are only frame > widgets the window will initially be very very tiny. If you expand > or maximize the window you'll see a thin black frame at the top, > yay, a thin white frame at the bottom, yay, but the middle grey > "body" frame will NOT span the Y axis, boo. > > It's there, and stretches from side to side, but it refuses to > stretch top to bottom. Adding a widget (say, a Text) doesn't help, > the light grey non-frame rectangles remain. > > My investigations seem to indicate that the light grey bars are > part of something the Tk docs call a "parcel" that each slave > widget gets packed into. Apparently the "header" and "log" frames > don't use their entire parcels, but I don't know how to get the > parcels themselves to "shrinkwrap" to the size of the actual Frame > widgets. > > In any event, my head's sore and I'm just about ready to take out > some graph paper and use the grid() layout manager instead. But I > really want the automatic resizing that the pack() manager will do, > rather than the static layout grid() will give me. > > Any thoughts or advice?
Sorry I can't help you with pack, I don't use it anymore. I am able to do everything with grid that I can do with pack. Once I learned to use grid I liked it better than pack. Spend some time to learn grid you may like it. I'm sure others will disagree, but for me it works for everything I need. jim-on-linux http://inqvista.com > > Thanks in advance, > ~Simon > > # Tkinter script > from Tkinter import * > > t = Tk() > > header = Frame(t, bg="black", height=10) > header.pack(expand=1, fill=X, side=TOP, anchor=N) > > body = Frame(t, bg="grey") > body.pack(expand=1, fill=BOTH, anchor=CENTER) > > log = Frame(t, bg="white", height=10) > log.pack(expand=1, fill=X, side=BOTTOM, anchor=S) > > t.mainloop() -- http://mail.python.org/mailman/listinfo/python-list