2010-02-22 6 views
7

Ich habe gtk.Window und ich muss schließen. Ich muss die Show schließen den Nachrichtendialog und klicken Sie auf Ja, wenn das Fenster geschlossen werden sollte, es sei denn, es gibt ein Showfensterfangen schließen gtk.window

Vielen Dank.

+0

+1 Gute Frage. –

Antwort

4

Behandeln Sie das Signal delete-event. Return False zum Schließen, True zum Abbrechen.

2

Hier ist, wie ich es verwenden:

# 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 
+0

Wenn Sie das Fenster Gtk.builder und dont subclass verwenden, müssen Sie etwas tun wie window = self.builder.get_object ('pyWindow') window.connect ('destroy', Gtk.main_quit) – semisided1