这是关于Tk的一般性问题,请原谅我没有发布code
。我写了一个小的Tcl / Tk GUI,它包含一个条目,几个checkbuttons,一个radiobutton和一个按钮小部件。当任何这些小部件发生变化时,我需要运行一个特定的proc来检查所有小部件的状态并执行某些操作。就像选中checkbutton或在条目小部件中键入某些内容一样。
我可以通过使用小部件特定选项来实现所需的行为,例如-command
和checkbutton
的{{1}},radiobutton
的{{1}}等等。我对此实现的问题是,这不是很透明和可读。
是否可以使用-validatecommand
命令或其他内容来调用窗口小部件更改?
注意:我意识到我可以entry
bind
和bind
之类的内容,但我只想在实际更改小部件时触发脚本。
谢谢
答案 0 :(得分:3)
使用-variable和-textvariable选项(后者用于条目,前者用于检查按钮和单选按钮)。让支持所有小部件的变量成为同一个数组的成员。然后在整个数组上使用trace
来处理变量更新。
array set ::form {entry "" flag 0}
entry .entry -textvariable ::form(entry)
checkbutton .flag -variable ::form(flag)
proc handle_update {name1 name2 op} {
# something changed
# <your code here>
}
trace add variable ::form write handle_update