点击更新按钮后,alist会更新,如何获取更新值并可以在组合框中选择?非常感谢!
namespace eval PreGen {
set alist {sec1 sec2 sec3 sec4}
proc SetUp {} {
ttk::combobox .c -values $PreGen::alist
button .b -text update -command PreGen::Update
grid ...
}
proc Update {} {
...
set PreGen::alist {op1 op2 op3 ...} #the list value got from other file
...
}
}
答案 0 :(得分:0)
您可以轻松添加跟踪。最简单的帮助程序实现跟踪回调,但您可以使用apply
术语;这也会起作用,但代码更不透明,因为它在一条线上更加疯狂。这是程序版本:
namespace eval PreGen {
# ALWAYS use [variable] to set default values for variables
variable alist {sec1 sec2 sec3 sec4}
proc SetUp {} {
variable alist
ttk::combobox .c -values $alist
trace add variable alist write ::PreGen::AlistUpdated
# Could use [namespace code] to generate the callback:
# trace add variable alist write [namespace code AlistUpdated]
# but that feels like overkill in this case
button .b -text update -command PreGen::Update
grid ...
}
proc AlistUpdated {args} {
# We just ignore the arguments; don't need them here
variable alist
.c configure -values $alist
}
proc Update ...
}
当然,如果您只在该命名空间的过程中设置变量,则可以直接在正确的时间调用.c configure -values
。这就是我实际建议您做的事情。