#!/usr/bin/wish frame .b foreach x { 1 2 3 4 5 6 7 8 } { set dx [expr 8-$x] button .b.b$dx -text $x -command [list togglebit $x] \ -fg hotpink pack .b.b$dx -side left -padx 2 -pady 4 set level($x) l bind all $x [list togglebit $x] } pack .b -side top -fill both -expand true proc togglebit { x } { global level if {$level($x) == "l"} { set level($x) h } else { set level($x) l } sendit } proc sendit {} { global res .b level set cmd parcon foreach x { 1 2 3 4 5 6 7 8 } { lappend cmd ${x}$level($x) } set res [eval exec $cmd] regexp "old = ........\nnew = (........)" $res match binary for {set x 0} {$x < 8} {incr x} { if { [string index $binary $x] == "1" } { .b.b$x configure -bg gray90 -rel sunken } else { .b.b$x configure -bg gray30 -rel raised } } } sendit