拦截Tkinter的“退出”命令?

7 投票
5 回答
27033 浏览
提问于 2025-04-16 09:41

我正在用Python和Tkinter写一个客户端-服务器程序。我需要服务器能够记录连接的客户端。为此,我希望客户端在用户点击退出按钮(就是右上角的那个“X”)后,自动向服务器发送一条消息。请问我怎么知道用户什么时候退出程序呢?

5 个回答

4

在我的情况下,下面的代码没有成功:

root.protocol("WM_DELETE_WINDOW", app.on_delete)  # doesn't work

不过,使用这种形式就成功了:

root.wm_protocol ("WM_DELETE_WINDOW", app.on_delete)  # does work
7

你可以使用Python的 atexit 模块。

比如说:

import atexit

def doSomethingOnExit():
    pass

atexit.register(doSomethingOnExit)
21

你想使用顶层窗口的 wm_protocol 方法。具体来说,你对 WM_DELETE_WINDOW 协议很感兴趣。如果你使用这个方法,它可以让你注册一个回调函数,当窗口被关闭时,这个函数会被调用。

用法:

root.protocol("WM_DELETE_WINDOW", app.on_delete)

撰写回答