【发布时间】:2014-09-29 11:17:23
【问题描述】:
我有一个打开 TK 顶层窗口的 TCL 脚本。在这个窗口中,用户可以操作一些小部件(调用其他程序来完成某些工作的按钮、检查按钮等)。当用户完成后,我希望他单击此窗口中的一个按钮,该按钮将导致顶层被破坏并且打开它的过程返回一个值。这是我所拥有的:
proc openWindow {} {
set w .testwindow
catch {destroy $w}
toplevel $w
<here I setup all the widgets of the window>
button $w.btn -text "Exit" -command {
set ret [finishTest]
puts "returning $ret"
return $ret
}
pack $w.btn
pack $w
}
proc finishTest {} {
<here I evaluate the state of the $w widgets>
if {some condition} {
destroy $w
return 0
} else {
destroy $w
return -1
}
}
当我调用 openWindow 时,窗口显示并正常运行,当我单击退出按钮时,它正确打印“returning: $ret”,但是当我调用 puts [openWindow] 时,它只打印一个新行而没有其他点击按钮后的字符。
我全局定义了 $w 变量,以便我可以在 finishTest 过程中的 openWindow 之外访问它。
感谢您的建议!
【问题讨论】: