Tcl / Tk绑定需要全局变量吗?

时间:2011-07-29 23:39:57

标签: tcl tk

我有一个控制自动测试仪的Tcl脚本。到目前为止,它是一个控制台程序,它在命令提示符下获取用户输入。一位同事写了一个可以由脚本启动的Tk GUI。我自己从未使用过Tk,所以我不理解很多语法。

在测试开始时,脚本必须从操作员处获取单元序列号。这是我的同事写的那个功能:

proc GetSerialNumber {} {
 global gUserInterfaceBarCode

 DisplayMessage "Enter serial number:"

 .c.serialnumberbox configure -state normal

 focus .c.serialnumberbox

 bind .c.serialnumberbox <Return> { set gUserInterfaceBarCode [.c.serialnumberbox get] }

 tkwait variable gUserInterfaceBarCode

 #grid forget .c.serialnumberbox

 .c.serialnumberbox configure -state disabled

}

DisplayMessage是一个只更新GUI上文本标签的过程。

我不喜欢有一个全局变量gUserInterfaceBarCode用于保存序列号的事实。有没有办法使用局部变量而让程序返回该值?

如果我理解正确,如果取出行tkwait variable gUserInterfaceBarCode,则该函数在该变量发生变化之前不会阻塞。这是从GUI元素捕获用户输入的最佳方法吗?

1 个答案:

答案 0 :(得分:6)