簡単な電卓を作ってみました.
以下がソースです.
entry .e -relief sunken -textvariable v
frame .f -height 120 -width 120
pack .e .f -side top -fill x
set i 0
set v 0
set r 0.25
set ini 1
foreach n {7 8 9 * 4 5 6 / 1 2 3 - 0 + = C} {
if {[string match {[0-9]*} $n]} {
button .f.b$n -text "$n" -command "num $n"
} elseif {$n == "="} {
button .f.b= -text "="
} elseif {$n == "C"} {
button .f.bC -text "C" -command "set v 0;set ini 1"
} else {
button .f.b$n -text "$n" -command ".e insert end $n;set ini 0"
}
place .f.b$n -relx [expr ($i%4)*$r] -rely [expr ($i/4)*$r] -relw $r -relh $r
incr i
}
bind .f.b= <1> { set v [expr $v];set ini 1}
proc num n {
global ini v
if {$ini} {
set v $n
} else {
set v $v$n
}
set ini 0
}
proc tkerror err {
global v
set v 0
tk_dialog .err "calc" $err warning 0 OK
}
|
これじゃ,Tcl/Tk そのままだな.
現に上のソースを wish に渡すと動いてしまいます。