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
的内容,因为看似不起作用?
答案 0 :(得分:0)
Tk小部件引用的变量总是全局的(或者在另一个命名空间中,如果使用限定名称),因为小部件可以在过程返回并且Tcl不进行闭包后持久存在。如果改变它将是一个地震变化,我不认为它很可能会使调试脚本变得更加困难。 (此外,它需要一种不同的方式来进行内存管理,而且这种方式很难编写并且变得正确并且会产生很多连锁效应。)
因为Tk在全局上下文中使用变量名,所以要从过程中访问变量,您需要使用限定名称或将其带入范围。例如:
proc get_the_number {} {
return $::num
}
proc get_the_number {} {
global num
return $num
}
如果你的程序要在你的程序中多次引用变量,那么使用global
而不是合格的形式通常会更快,但差别很小,以至于“写出最清楚的东西” “是我们的官方建议。