2010-02-22 36 views
7

我有gtk.Window,我需要關閉。我需要關閉顯示消息對話框並單擊是,如果窗口應該關閉,除非有一個顯示窗口catch close gtk.window

謝謝。

+0

+1問得好。 – 2011-09-04 11:16:25

回答

4

處理delete-event信號。返回False關閉,True取消。

2

這是我如何使用它:

# 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

我使用Gtk.builder和不要子類窗口,你將需要做類似於 window = self.builder.get_object('pyWindow') window.connect('destroy',Gtk.main_quit) – semisided1 2015-01-27 16:43:23