1

这是一个关于 Tk 的一般问题,所以请原谅我没有code发布。我编写了一个小型 Tcl/Tk GUI,它由一个条目、几个检查按钮、一个单选按钮和一个按钮小部件组成。当这些小部件中的任何一个发生更改时,我需要运行特定的 proc 以检查所有小部件的状态并执行某些操作。就像检查按钮或在条目小部件中键入内容时一样。

-command我可以通过使用特定于小部件的选项(例如forcheckbutton和for等radiobutton)来实现所需的行为。我对这个实现的问题是这不是很透明和可读。-validatecommandentry

是否可以使用bind命令或其他方式在小部件更改时调用脚本?

注意:我意识到我可以bind做类似的事情<KeyRelease><ButtonRelease>但我只想在小部件实际更改时触发脚本。

谢谢你

4

1 回答 1

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
于 2013-01-04T14:44:59.463 回答