Ejemplo para crear diálogos modales de distintos tipos con distintos botones.

import gtk
import sys

# por defecto crea un mensaje de informacion sin botones
info = gtk.MessageDialog(message_format="informacion!")
# tipo advertencia con un boton de ok
warning = gtk.MessageDialog(type=gtk.MESSAGE_WARNING,
    buttons=gtk.BUTTONS_OK_CANCEL, message_format="advertencia..")
# pregunta con botones si no
question = gtk.MessageDialog(type=gtk.MESSAGE_QUESTION,
    buttons=gtk.BUTTONS_YES_NO, message_format="pregunta?")
# error con boton ok
error = gtk.MessageDialog(type=gtk.MESSAGE_ERROR,
    buttons=gtk.BUTTONS_OK, message_format="error!?!")

# run bloquea hasta que se produzca un evento y devuelve el valor del evento
if info.run() == gtk.RESPONSE_DELETE_EVENT:
    print "si, es la unica senial que puede emitir, ya que no tiene botones"
# hay que esconder el dialogo
info.hide()

# almacenamos el valor de retorno en una variable para controlar varios valores
response = warning.run()
warning.hide()

if response == gtk.RESPONSE_OK:
    print "advertencia respondio aceptar"
elif response == gtk.RESPONSE_CANCEL:
    print "advertencia respondio cancel"

response = question.run()

if response == gtk.RESPONSE_YES:
    print "respondio si!"
elif response == gtk.RESPONSE_NO:
    print "respondio no :("

question.hide()

if error.run() == gtk.RESPONSE_OK:
    print "error OK"

error.hide()
sys.exit(0)

gtk.main()