我有一个变量和一个显示变量内容的标签。每次变量有新值时它都会改变:
global MyVariable
label .mylabel -textvariable MyVariable
这有效。
现在的问题是 MyVariable
不包含我想要显示的值,但它是一个值列表,我想执行一些代码来提取实际包含数据的子字段要显示。有没有一种简单的方法可以将一些粘合逻辑放入该标签中,以便在显示更改的变量内容之前对其进行预处理?
最佳答案
标签只能监视整个变量,无论是标量还是(关联)数组的元素。他们没有任何东西可以查看列表、字典或其他结构。但您可以通过跟踪来模拟您想要的内容。
trace add variable x write [list apply {args {
global x x_1
set x_1 [lindex $x 1]
}}]
set x [list a b c d e]
label .x1 -textvariable x_1
pack .x1
# Some time later...
lset x 1 fruitbat
# A different type of update
set x "the quick brown fox"
您可以将任意复杂的计算放入跟踪中,但在实践中,让它们相当快以便您的 GUI 感觉响应迅速是一个非常好的主意。从文件或数据库读取实际上可能足够快(在某些情况下),所以不要感觉太受限......
关于tcl - 自动显示TK标签中的TCL子字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54807636/