Existem vários problemas com este código.
-
O método dialog.destroy () nunca será chamado, você retorna sua função antes desta chamada.
-
Veja o
Gtk.MessageDialog
. Ele irá lidar com algum código clichê que você precisa com umGtk.Dialog
regular. -
Leia o PEP-8 . Não é uma regra, mas prática comum. Os nomes de UpperCase são destinados a classes, atributos e métodos devem ser camelCase ou with_underscore.
-
O loop for é ineficiente. E todo o método poderia ser recuado em uma aba menos.
Aqui está um código de exemplo, pep-8 e o messagedialog ainda precisa ser feito.
def confirm_close(self, widget, event):
unsaved = False
for doc in self.Documents:
if not doc.Saved:
unsaved = True
break # Break here, no need to check more documents
if not unsaved:
Gtk.main_quit()
#TODO: build the messagedialog
dialog = Gtk.MessageDialog(....)
response = dialog.run()
if response == Gtk.ResponseType.OK:
# Really quit the application
Gtk.main_quit()
# Close the dialog and keep the main window open
dialog.destroy()
return True