拦截Tkinter"退出"命令?

Joh*_*ohn 6 python client-server tkinter exit

我正在用Tkinter用Python编写客户端服务器程序.我需要服务器来跟踪连接的客户端.为此,我希望客户端在单击退出按钮(角落中的标准"X")后向服务器发送自动消息.我怎么知道用户何时退出该程序?

Bry*_*ley 13

您想使用顶层窗口的wm_protocol方法.具体来说,您对WM_DELETE_WINDOW协议感兴趣.如果使用该方法,则允许您注册在销毁窗口时调用的回调.

用法:

root.protocol("WM_DELETE_WINDOW", app.on_delete)
Run Code Online (Sandbox Code Playgroud)

  • @John:`protocol`方法接受一个函数的引用.通过添加尾部括号,您调用`app.on_delete`并将该方法的结果传递给协议处理程序.正确的用法是`root.protocol("WM_DELETE_WINDOW",app.on_delete)` (5认同)

Mak*_*nko 5

你可以使用python atexit模块.

例如:

import atexit

def doSomethingOnExit():
    pass

atexit.register(doSomethingOnExit)
Run Code Online (Sandbox Code Playgroud)