Также посмотрите на один из самых старых из них: инструментарий Tk (обычно связанный с tcl, но также доступный на других языках).В Tk обновление значения в графическом интерфейсе обычно выполняется простым обновлением переменной:
set foo "Hello" ;# just a simple variable
# Create a label widget displaying "Hello"
pack [label .l -textvariable foo]
# Now change "Hello" to "Goodbye"
set foo "Goodbye"
Или, например, 10-секундный виджет обратного отсчета:
set countdown 10
pack [label .count -textvariable countdown]
proc tick {} {
incr countdown -1
if {$countdown > 0} {
after 1000 tick
}
}
tick
На самом деле,Функция получена из самого языка tcl с помощью команды трассировки:
# A simple auto-incrementing variable:
set foo 0
proc autoIncrement {varname args} {
incr $varname
}
trace add variable foo read {autoIncrement foo}
# now every time foo is read it increments itself by 1
Конечно, вы не можете ожидать, что все языки будут иметь эту функцию.Однако вы можете эмулировать его, опрашивая, возможно, используя setInterval()
.То, как Tk делает это, кажется мне наиболее естественным.