поймать закрыть gtk.window

У меня есть gtk.Window, и мне нужно поймать закрытие. Мне нужно закрыть диалоговое окно «Показать сообщение» и нажать «Да», если окно должно быть закрыто, если нет окна «Показать».

Спасибо.


person 0xAX    schedule 22.02.2010    source источник


Ответы (2)


Обработка delete-event сигнал. Верните False для закрытия, True для отмены.

person Johannes Sasongko    schedule 23.02.2010

Вот как я его использую:

# in constructor:
        self.connect('destroy', gtk.main_quit)
        self.connect('delete-event', self.on_destroy)

    def on_destroy(self, widget=None, *data):
        # return True --> no, don't close

        messagedialog = gtk.MessageDialog(parent=self, flags= gtk.DIALOG_MODAL & gtk.DIALOG_DESTROY_WITH_PARENT, 
                                          type=gtk.MESSAGE_QUESTION, buttons=gtk.BUTTONS_OK_CANCEL, message_format="Click on 'Cancel' to leave the application open.")
        messagedialog.show_all()
        result=messagedialog.run()
        messagedialog.destroy()
        if result==gtk.RESPONSE_CANCEL:
            return True
        return False
person guettli    schedule 15.01.2014
comment
Если вы используете Gtk.builder и не создаете окно подкласса, вам нужно будет сделать что-то вроде window = self.builder.get_object('pyWindow') window.connect('destroy', Gtk.main_quit) - person semisided1; 27.01.2015