在TK标签中自动显示TCL子字段

问题描述 投票:2回答:1

我有一个变量和一个标签,显示变量的内容。每次变量有一个新值时它都会改变:

global MyVariable
label .mylabel -textvariable MyVariable

这样可行。

现在问题是MyVariable不包含我想要显示的值,但它是一个值列表,我想执行一些代码来提取实际包含要显示的数据的子字段。是否有一种简单的方法可以将一些胶合逻辑放入该标签中,以便在更改的变量内容显示之前对其进行预处理?

tcl tk
1个回答
2
投票

标签只能观察整个变量,无论是标量还是(关联)数组的元素。他们没有任何东西可以查看列表或字典或其他结构。但是你可以通过跟踪来模拟你想要的东西。

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就能感受到响应,这是一个非常好的主意。从文件或数据库读取实际上可能足够快(在某些情况下),所以不要觉得太受限制......

© www.soinside.com 2019 - 2024. All rights reserved.