HJG 2014-03 - This belongs to the series of Grid-Demos: How to do a grid-like GUI-layout.
A grid of buttons, done with grid.
# https://wiki.tcl-lang.org/39580 # gridDemo-grid1.tcl package require Tk global Prg set Prg(Title) "Grid-Demo_11" set Prg(Version) "v0.01" set Prg(Date) "2014-03-15" set Prg(Author) "Hans-Joachim Gurt" set Prg(Contact) [string map -nocase {: @ ! .} gurt:gmx!de] set Prg(About) "Grid-Demo - Grid" set Prg(Msg) "using grid, with labels and buttons" proc start {} { set ::Prg(Msg) "Starting..." after 1000 { .b11 invoke } ;# Sorry, no animated button-press here... after 1500 { .b22 invoke } after 2000 { .b33 invoke } } proc ButtonProc { b } { set ::Prg(Msg) "Button pressed: $b" } #: Main wm title . "$Prg(Title) $Prg(Version)" puts "$Prg(Title) $Prg(Version)" label .lb_1 -text "GridDemo" -width 12 -bg white -pady 10 label .lb_2 -textvariable Prg(Msg) -width 30 -bg grey -pady 10 option add *Button.width 4 option add *Button.height 2 # button .b11 -text "11" -command { ButtonProc "11" } for {set i 11} {$i<=14} {incr i} { button .b$i -text "$i" -command "ButtonProc $i" } for {set r 2} {$r<=4} {incr r} { for {set c 1} {$c<=4} {incr c} { button .b$r$c -text "$r$c" -command "ButtonProc $r$c" } } option add *Button.width 7 option add *Button.height 1 button .bt_start -text "Start" -command { start } button .bt_quit -text "Quit" -command { exit } grid .lb_1 grid .b11 .b12 .b13 .b14 -sticky nsew grid .b21 .b22 .b23 .b24 -sticky nsew grid .b31 .b32 .b33 .b34 -sticky nsew grid .b41 .b42 .b43 .b44 -sticky nsew grid .lb_2 grid .bt_start - .bt_quit grid configure .lb_1 -columnspan 4 -padx 4 grid configure .lb_2 -columnspan 4 -padx 4 grid configure .bt_start -columnspan 2 -padx 4 grid configure .bt_quit -columnspan 2 -padx 4 #.
Compared to the version with pack, this looks simpler (no need to define frame & pack),
but now we need more "grid configure" to tweak the layout.
Also, putting in the colors from that version would require some extra work.