在PC关机时触发函数 - tkinter

1 投票
1 回答
512 浏览
提问于 2025-04-18 08:30

我有一个使用tkinter的程序,当你点击窗口右上角的“X”关闭它时,会调用一个函数,代码如下:

root.protocol('WM_DELETE_WINDOW', in_close)

这里的in_close是一个会被调用的过程。问题是,当你关掉电脑时,这个行为并没有发生。对于我的程序来说,当程序关闭或者你关掉电脑时,必须触发这个函数。

我使用的是python 3.3.3,想确认一下。有没有人知道在关机时怎么能让这个函数也被调用呢? :(

任何想法都非常感谢!!谢谢!!

1 个回答

1

我不知道Tkinter有没有专门的工具来捕捉你说的系统关机信号。你可以注册一个信号处理器,这样就能捕捉到关机信号,并触发in_close这个函数。

(另外,看看这里,可以获取一些额外的信息)

import signal

def in_close(signum = None, frame = None):
    # Here you can attempt to gently exit your application.
    pass

# For some common signals that will close your program.
for sig in [signal.SIGTERM, signal.SIGINT, signal.SIGHUP, signal.SIGQUIT]:
    signal.signal(sig, in_close)

正如评论中提到的,这个方法在Windows上并不适用。如果想讨论如何处理Windows的关机事件,可以查看:

Python - Windows关机事件

撰写回答