2015-01-09 4 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). Я не знаю наверняка, ваше приложение будет уведомлено таким образом, когда система выключится, но, вероятно, это произойдет.

Для получения дополнительной информации см этот вопрос на StackOverflow: Intercept Tkinter "Exit" command?

+0

Я пробовал протокол WM_DELETE_WINDOW в небольшой программе tkinter. Захват окна закрыт. Shutdown/Restart - нет. Поскольку я запускаю shutdown.exe из сценария PowerShell, я предполагаю, что могу как-то попытаться отправить мое приложение команде shutdown и добавить это к скрипту. – EdLipson

+0

Просто попробовал taskkill, и он ответил правильно. Это должно уловить 90-95% всех ситуаций для меня. Спасибо за указатель! – EdLipson

Смежные вопросы