Tcl 是否尝试获取通过文本编辑器传递的变量的值?
这是我在这里讨论的过程的一个小例子。Tcl 是否尝试获取通过文本编辑器传递的变量的值?,tcl,tk,Tcl,Tk,这是我在这里讨论的过程的一个小例子。 如何检查$num的内容,因为puts似乎不起作用?Tk小部件引用的变量始终是全局变量(或者在另一个命名空间中,如果使用限定名称),因为小部件可以在过程返回后保持,并且Tcl不会进行闭包。如果这一点被改变,那将是一个巨大的变化,我认为这不太可能,因为这将使调试脚本变得更加困难。(此外,它还需要一种不同的内存管理方式,这种方式编写和更正起来非常糟糕,而且会产生很多连锁反应。) 因为Tk在全局上下文中使用变量名,所以要从过程中访问变量,需要使用限定名或将其引入范围
如何检查
$num
的内容,因为puts似乎不起作用?Tk小部件引用的变量始终是全局变量(或者在另一个命名空间中,如果使用限定名称),因为小部件可以在过程返回后保持,并且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"
}
如果您的过程要在过程中多次引用变量,使用
global
而不是限定的形式通常会更快,但差异很小,我们的官方建议是“编写最清晰的内容”。num
将在全局范围内,因此,请尝试将$::num放入有效的,谢谢!!你能解释一下吗?我仍然可以基于该值执行操作吗?教程中有一节关于范围:--另外,Tk选项
手册页中记录了-textvariable
:是的,您可以随意使用该变量。
proc get_the_number {} {
return $::num
}
proc get_the_number {} {
global num
return $num
}