#!/usr/bin/env wish

array set Var {}

foreach x {a b c} {
    ttk::entry .$x \
        -textvariable Var($x) \
        -validate key \
        -validatecommand {regexp {^\d*$} %P}
}

grid .a [label .ab -text *] .b [label .bc -text +] .c \
    [label .e -text =] [label .r -textvariable Result]

trace add variable Var write {apply {args {
    global Var Result
    set expr {expr {$Var(a) * $Var(b) + $Var(c)}}
    if {[catch $expr Result]} \
        { set Result NaN }
}}}
