使用Tk Tcl点击"x"按钮

SIM*_*MEL 4 tk-toolkit tcl exit

我正在使用Tcl/Tk构建一个GUI,对于Linux环境,我看到可以"抓住"按下窗口的"x"按钮(右上角的按钮关闭程序).

我该如何捕捉这些事件?

Don*_*ows 7

要控制删除窗口的请求,请配置合适的协议处理程序:

wm protocol . WM_DELETE_WINDOW {
    if {[tk_messageBox -message "Quit?" -type yesno] eq "yes"} {
       exit
    }
}
Run Code Online (Sandbox Code Playgroud)

默认行为(即,如果协议处理程序是字符串)仅仅destroy是请求所针对的顶层.


kos*_*tix 5

WM_DELETE_WINDOW使用该wm protocol 命令绑定到"协议消息" .

另请注意,如果您只想要跟踪窗口销毁(在更高级别),只需绑定到其<Destroy>事件即可.

  • 绑定到toplevels上的`<Destroy>`可能很棘手,因为你也可以获得顶层子窗口小部件(由于一般事件处理规则). (3认同)
  • 我过去做过那个.另一种方法是查看事件窗口是否与事件窗口的顶层相同:`if {"%W"eq [winfo toplevel%W]} ...`(或过程中的等效项). (2认同)