2010-02-22 8 views
7

J'ai gtk.Window et j'ai besoin d'attraper la fermeture. Je dois fermer la boîte de dialogue Afficher le message et cliquer sur Oui si la fenêtre doit être fermée, sauf s'il y a une fenêtre d'affichageattraper fermer gtk.window

Merci.

+0

+1 Bonne question. –

Répondre

4

Gérez le signal delete-event. Retourne False pour fermer, True pour annuler.

2

Voici comment je l'utilise:

# 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

Si vous utilisez la fenêtre Gtk.builder et dont vous n'avez pas de sous-classe, vous devrez faire quelque chose comme window = self.builder.get_object ('pyWindow') window.connect ('détruire', Gtk.main_quit) – semisided1