Приложение pygtk не выходит через событие удаления на win32 - PullRequest
0 голосов
/ 10 июля 2011

У меня есть приложение pygtk, работающее на Windows и Linux. Основной графический интерфейс пользователя имеет функцию закрытия, которая вызывается из события удаления (когда пользователь нажимает кнопку X в окне) или из меню через FILE-> QUIT

код выглядит так

def close_down(self):
    self.hide_gui()
    #do some cleanup stuff here, close down a log file etc...
    gtk.main_quit()

def on_close_down_activate(self, widget):  # From menu
    self.close_down()
    print("Closed")

def on_main_gui_delete_event(self, window, event): # From window X button
    self.close_down()
    print("Closed")

Но когда пользователь нажимает кнопку X в окне, в строку cmd выводится слово «Закрыто», но приложение зависает и никогда не возвращает управление строкой cmd, если я не убью python через диспетчер задач. Если пользователь выбирает «Выход» в меню «Файл», приложение выводит слово «Закрыто» и возвращает управление в строку cmd.

В Linux он работает как положено. Gtk на окнах поддерживает какую-то работу?

1 Ответ

1 голос
/ 13 августа 2011

Чтобы закрыть приложение в PyGTK, вам действительно нужны две строки кода, а не одна.Я предполагаю, что в Linux окно закрывается, а процесс - нет.В Windows ничего не закрывается.

Чтобы это исправить, просто добавьте следующую строку ниже "gtk.main_quit ()"

return False

Причина этого кода в том, что в pyGTKВы можете использовать эту строку для создания "Вы уверены, что хотите выйти?"Диалоги.Если в строке указано «вернуть True», программа вообще не закроется.

...