关闭 GUI 而不退出应用程序 TCL

Close GUI without exiting application TCL

如何在不退出脚本的情况下关闭 GUI?

我有一个每 10 分钟运行一次的脚本,只要脚本中的一些变量发生变化就会调用 GUI,但是当我关闭 GUI 时,应用程序也会关闭。我尝试添加 -command {destroy .} 但它与 TK 中的 exit 命令做同样的事情,这是我的脚本

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
}

只要脚本过程中的变量发生变化,就会在脚本过程中调用 GUI 过程

您可以通过以下方式关闭 window:

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

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

wm withdraw - 使 window 完全不可见,甚至不是图标。也让 window 经理忘记了 window.

要使 window 消失而不破坏它(并结束应用程序),您可以在顶层使用 wm withdraw

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

您还可以拦截关闭 window 的请求(通过 wm protocol)并通过撤销处理该请求:

wm protocol . WM_DELETE_WINDOW {
    wm withdraw .
}

但是,如果您这样做,请确保您提供了一些其他方式来让进程真正退出(假设您正在制作一个普通的应用程序);用户无法真正关闭程序并让它消失,这让用户感到沮丧。