2016-06-07 12 views
0

Wie schließe ich die GUI, ohne das Skript zu beenden?Schließen Sie die GUI, ohne die Anwendung zu beenden. TCL

Ich habe ein Skript, das alle 10 Minuten ausgeführt wird und eine GUI aufrufen wird, wenn sich einige Variablen im Skript ändern. Wenn ich jedoch die GUI schließe, wird die Anwendung ebenfalls geschlossen. Ich habe versucht, das Hinzufügen -command {destroy .} aber es macht das gleiche wie der exit Befehl in TK, hier ist mein Skript

lappend auto_path "/bin/gui/scripts" 
package require scriptgui 
monitor /bin/files/folder1 /bin/files/folder2 
set i 0 
while {i < 1} { 
after 600000 
script 
} 

der GUI proc im Skript proc aufgerufen wird, wenn die Variablen im Skript proc

Antwort

3

Um das Fenster verschwinden zu lassen, ohne es zu zerstören (und die Anwendung zu beenden), verwenden Sie wm withdraw auf dem Toplevel.

# Assuming you're just using the default one 
wm withdraw . 

Sie können auch eine Anfrage abfangen ein Fenster (über wm protocol) und zu handhaben, dass durch den Rückzug zu schließen:

wm protocol . WM_DELETE_WINDOW { 
    wm withdraw . 
} 

Wenn Sie jedoch, dass Sie eine andere Art und Weise machen Sie sicher bereitstellen müssen, um tatsächlich der Prozess-Ausgang für real (vorausgesetzt, Sie machen eine normale Anwendung); Es ist frustrierend für die Benutzer, dass sie das Programm nicht wirklich schließen können und es weggehen lassen.

0

ändern Sie können das Fenster mit der folgenden schließen:

if { [info commands wm] != {} } {wm withdraw .} 

http://www.tcl.tk/man/tcl8.4/TkCmd/wm.htm#M46

wm zurückziehen - machen Sie das Fenster komplett unsichtbar, nicht einmal ein Symbol. Außerdem lässt der Fenstermanager das Fenster vergessen.