Just copy the script below. run it. The how-to-use explanation is on the program interface. This code is meant to teach the geometry managers [pack], [grid] and [place]. This script is working 100%. The funny thing in it, if you make a mistake the Tcl parser will give you the errors, rather than me taking care of them :) ====== #!/usr/bin/wish #Author: Rani Fayez Ahmad (Superlinux) #Script Topic: Tcl/Tk Geometry Managers Demo #Please read the variable below to know the goal of this script set labeltext " You will have 5 buttons on the window toplevel once you click any of the buttons \[pack\], \[grid\], or \[place\].\n Those three buttons correspond to the Tcl/Tk geometry managers \[pack\], \[grid\], and \[place\].\n If you run \[pack\] button, it will read the options to set the \[pack\] Tcl command for 5 buttons from each of the 5 entries, \nand display them in the \[pack\] method of geometry management.\n If you run \[grid\] button, it will read the options to set the \[grid\] Tcl command for 5 buttons from each of the 5 entries, \nand display them in the \[grid\] method of geometry management.\n If you run \[place\] button, it will read the options to set the \[place\] Tcl command for 5 buttons from each of the 5 entries, \nand display them in the \[place\] method of geometry management.\n \nThe buttons window paths are of the form .top.b\$i , where \$i can be one of 1,2,3,4, or 5 " wm title . "Tcl/Tk Geometry Managers Demo" button .pack_button -text "\[pack\] geometry manager" -command { .last_geometry_manager configure -text "Last geometry manager used \[pack\]" raise .top if {! [winfo exists .top ]} { toplevel .top } for {set i 1 } { $i < 6} {incr i } { if {[winfo exists .top.b$i]} { destroy .top.b$i } button .top.b$i -text "button $i" pack .top.b$i } for {set i 1 } { $i <6 } {incr i } { set options [.fl$i.ent$i get ] eval "pack configure .top.b$i $options" } } button .grid_button -text "\[grid\] geometry manager" -command { .last_geometry_manager configure -text "Last geometry manager used \[grid\]" if {! [winfo exists .top ]} { toplevel .top } raise .top for {set i 1 } { $i < 6} {incr i } { if {[winfo exists .top.b$i]} { destroy .top.b$i } button .top.b$i -text "button $i" grid .top.b$i } for {set i 1 } { $i < 6} {incr i } { set options [.fl$i.ent$i get ] eval "grid configure .top.b$i $options" } } button .place_button -text "\[place\] geometry manager" -command { .last_geometry_manager configure -text "Last geometry manager used \[place\]" if {! [winfo exists .top ]} { toplevel .top } raise .top for {set i 1 } { $i < 6} {incr i } { if {[winfo exists .top.b$i]} { destroy .top.b$i } button .top.b$i -text "button $i" place .top.b$i -y [expr $i*30] } for {set i 1 } { $i < 6} {incr i } { set options [.fl$i.ent$i get ] eval "place configure .top.b$i $options" } } for {set i 1 } { $i < 6} {incr i} { labelframe .fl$i -text "button $i options entry" entry .fl$i.ent$i -width 50 } pack [label .last_geometry_manager -text "No geometry manager has been used yet!"] pack .pack_button .grid_button .place_button for {set i 1 } { $i < 6} {incr i } { pack .fl$i .fl$i.ent$i } toplevel .top labelframe .fl_howto -text "How to use this program:" label .fl_howto.lab -text $labeltext -justify left pack .fl_howto .fl_howto.lab button .top.b -text buttton pack .top.b destroy .top.b ====== !!!!!! %| [Category Command] | [Category GUI] |% !!!!!!