当pc关闭时触发一个功能 - tkinter

时间:2014-06-04 02:19:15

标签: python python-3.x tkinter

我有一个tkinter程序,当你从它中取出一个函数时,使用:

来调用它
root.protocol('WM_DELETE_WINDOW', in_close)

其中in_close是一个被调用的过程。问题是关闭计算机时不会再现此行为。出于程序的目的,在程序关闭或关闭机器时触发此功能是完全必要的。

我在python 3.3.3以防万一。当它被关闭时,有谁知道如何重现这个? :(

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

1 个答案:

答案 0 :(得分:1)

我不知道Tkinter有一个特定的工具来捕捉你建议的系统关闭。您最好注册一个信号处理程序,它可以捕获关闭信号并触发in_close函数。

(另外值得查看here了解更多细节)

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 Shutdown Events