2012-03-07 279 views
0

當我執行下面的代碼的Tcl/Tk:如何銷燬根窗口時關閉頂層窗口

#!/bin/sh 
# \ 
exec wish "$0" ${1+"[email protected]"} 

set w .main 
toplevel $w 
wm title $w "FOO" 

我有兩個窗口,而不是一個。 我試圖隱藏的願望「。」窗口:

wm state . withdrawn 

但無論如何,當我關閉我的頂層窗口主要過程仍未完成。 我的問題是當我關閉頂層窗口並完全結束這個過程時如何破壞希望窗口?

+0

你真的想要2個窗口,還是1個? – 2012-03-07 13:16:34

+0

只有一個 - 頂層窗口。 – 2012-03-07 13:23:50

回答

1

如果您只想要1個窗口,爲什麼不在.窗口上操作?

wm title . "FOO" 

然後,當用戶關閉該窗口時,您的應用程序將完成。

+0

在這種情況下,我仍然有2個帶有「FOO」標題的窗口。我只想離開頂層窗口。 – 2012-03-07 13:41:30

+2

@rkaganov,似乎你沒有意識到,當'wish'開始時(或者你將Tk包加載到'tclsh'中),第一個* toplevel *窗口會自動創建並命名爲「。」。 (一個點)。因此,如果您只想要一個頂層窗口,只需使用名爲「。」的窗口即可。正如維諾德所表明的那樣,不要稱'頂層「,這會創建第二個(不需要的)窗口。關閉「。」將關閉整個過程。 – kostix 2012-03-07 14:18:42

+0

從技術上講,關閉最後一個頂層只是終止Tk的事件循環版本。 _Normally_導致Tcl解釋器乾淨地關閉,但其他選項也可能發生(例如,如果您在多個線程中運行Tk)。 – 2012-03-07 20:39:01