我有一个控制自动测试仪的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元素捕获用户输入的最佳方法吗?
答案 0 :(得分:6)