我有一個打開TK頂層窗口的TCL腳本。在這個窗口中,用戶可以操縱一些小部件(調用其他過程來完成某些工作的按鈕,檢查按鈕等)。當用戶完成時,我希望他單擊此窗口中的一個按鈕,以使頂層被銷燬,並打開它的過程返回一個值。以下是我已經有了:如何從TK頂層窗口返回值?
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,窗口顯示和行爲,因爲它應該,當我點擊退出按鈕,它正確打印「迴歸:$ RET」但我煥放打電話[openWindow]在點擊按鈕後,它只打印一個沒有其他字符的新行。
我定義了$ w變量globaly,以便我可以在finishTest過程中在openWindow之外訪問它。
謝謝您的建議!
謝謝,唐納,這解決了我的問題與從proc返回一個值!但是,正如我在Hoodiecrow的答案中所述,我必須使用Tcl/Tk8.3的非標準解釋器,其行爲與Wish完全不同。它允許我與小部件交互,我可以移動或調整窗口大小,但內部沒有任何反應。我知道這可能是一個完全不同的問題,而不是我最初提出的問題,但是如果你有一個建議,我會對它表示讚賞,謝謝! :) – 2014-09-30 07:44:59