2015-01-09 39 views
-1

我想让我的tkinter应用程序(python 3.4.2)知道系统关机事件,以便它可以释放sqlite3连接并关闭日志。我从2009年发布了一篇关于使用win32 api模块的文章。我无法按照我的预期(我可能不会理解它)获取发布的样本,其中的消息应该导致wndproc函数触发。Python tkinter捕获Windows系统关机

2009年参考: Python - Windows Shutdown Events

任何其他好的引用或指针如何做到这一点?

+0

你真的要触发这个只在系统关机,或者你想触发它,只要你的程序被强制退出? –

+0

大部分系统关机,但任何强制退出都会更好。我通常每天根据公司政策重新启动系统。我假设重启发出关机信号。 – EdLipson

回答

0

通常情况下,您希望在应用程序关闭时关闭连接,即使它不是正常的关闭(即:通过从菜单中选择“退出”)。正常的做法是为WM_DELETE_WINDOW协议设置一个处理程序(当tk仅在X11系统上工作时留下的恐龙的某些东西)。我不确定你的应用程序会在系统关闭时以这种方式通知,但它可能会发生。

欲了解更多信息,请参阅计算器这样一个问题:Intercept Tkinter "Exit" command?

+0

我在一个小的tkinter程序中尝试了WM_DELETE_WINDOW协议。窗口关闭被捕获。关机/重启不是。由于我从PowerShell脚本运行shutdown.exe,我想我可以尝试以某种方式发送我的应用程序关机命令,并将其添加到脚本中。 – EdLipson

+0

刚刚尝试taskkill,它正确响应。这应该为我抓住90-95%的所有情况。感谢指针! – EdLipson