Previous: Packing
Up: Widgets
Next: Using TCL code to generate widgets
Previous Page: Packing
Next Page: Using TCL code to generate widgets
Frames are widgets whose main purpose is to contain other widgets - they don't do very much themselves. They are useful for helping to pack widgets into two dimensional layouts.
Suppose we want to create the following layout:
label1 entry1
label2 entry2
label3 entry3
This can conveniently be done by defining two frames to contain the two columns, and then packing the frames, as shown below:
frame .f1
frame .f2
label .f1.label1 -text "Label1"
label .f1.label2 -text "Label2"
label .f1.label3 -text "Label3"
#vertically pack labels
pack .f1.label1 .f1.label2 .f1.label3
entry .f2.entry1 -textvariable entrydata1 -relief sunken
entry .f2.entry2 -textvariable entrydata2 -relief sunken
entry .f2.entry3 -textvariable entrydata3 -relief sunken
#vertically pack entry boxes
pack .f2.entry1 .f2.entry2 .f2.entry3
#horizontally pack columns
pack .f1 .f2 -side left
Alternatively, three frames packed vertically above each other may be used to contain a single label and entry widget which are packed side by side:
frame .f1
frame .f2
frame .f3
label .f1.label1 -text "Label1"
entry .f1.entry1 -textvariable entrydata1 -relief sunken
#pack these two horizontally
pack .f1.label1 .f1.entry1 -side left
label .f2.label1 -text "Label2"
entry .f2.entry1 -textvariable entrydata2 -relief sunken
pack .f2.label1 .f2.entry1 -side left
label .f3.label1 -text "Label3"
entry .f3.entry1 -textvariable entrydata3 -relief sunken
pack .f3.label1 .f3.entry1 -side left
#now pack each frame vertically
pack .f1 .f2 .f3