试图获取通过文本编辑器传递的变量值?

时间:2018-04-18 21:31:52

标签: tcl tk

proc editor {} {
    label .l_LNum -text "Calibration Date"
    entry .e_Num -width 20 -relief sunken -textvariable num

    grid config .l_LNum -column 0 -row 0 -sticky e
    grid config .e_Num -column 1 -row 0 -sticky "snew"
}

这是我在这里谈论的一个小例子。 如何查看$num的内容,因为看似不起作用?

1 个答案:

答案 0 :(得分:0)

Tk小部件引用的变量总是全局的(或者在另一个命名空间中,如果使用限定名称),因为小部件可以在过程返回并且Tcl不进行闭包后持久存在。如果改变它将是一个地震变化,我不认为它很可能会使调试脚本变得更加困难。 (此外,它需要一种不同的方式来进行内存管理,而且这种方式很难编写并且变得正确并且会产生很多连锁效应。)

因为Tk在全局上下文中使用变量名,所以要从过程中访问变量,您需要使用限定名称或将其带入范围。例如:

proc get_the_number {} {
    return $::num
}
proc get_the_number {} {
    global num
    return $num
}

如果你的程序要在你的程序中多次引用变量,那么使用global而不是合格的形式通常会更快,但差别很小,以至于“写出最清楚的东西” “是我们的官方建议。