9.5. Diálogos

El control Dialog (Diálogo) es muy simple, y realmente es sólo una ventana con unas cuantas cosas ya empaquetadas. Simplemente crea una ventana, y luego empaqueta una VBox en ella, que contiene un separador y luego una HBox llamada "action_area" ("área de acción").

El control Dialog (Diálogo) se puede usar para mensajes emergentes para el usuario, y otras tareas similares. Es realmente básico, y sólo hay una función para la caja de diálogo, que es:

  dialog = gtk.Dialog(title=None, parent=None, flags=0, buttons=None)

donde title (título) es el texto usado en la barra de título, parent (padre) es la ventana principal de la aplicación y flags establece varios modos de operación para el diálogo:

  DIALOG_MODAL - hace el diálogo modal
  DIALOG_DESTROY_WITH_PARENT - destruye el diálogo cuando su padre sea destruido
  DIALOG_NO_SEPARATOR - omite el separador entre la vbox y el área de acción

El argumento buttons (botones) es una tupla de pares texto de botón y respuesta. Todos los argumentos tienen valores predeterminados y pueden especificarse usando palabras clave.

Esto creará la caja de diálogo, y ahora depende del desarrollador el usarla. Se podría empaquetar un botón en el área de acción:

  button = ...
  dialog.action_area.pack_start(button, TRUE, TRUE, 0)
  button.show()

Y se podría añadir, por ejemplo, una etiqueta, al área vbox usando el empaquetamiento, con algo así:

  label = gtk.Label("Los diálogos molan")
  dialog.vbox.pack_start(label, TRUE, TRUE, 0)
  label.show()

Como ejemplo del uso de una caja de diálogo, se podrían poner dos botones en el área de acción, un botón de Cancelar, un botón de Aceptar y una etiqueta en el área vbox, haciendo una pregunta al usuario, informando de un error, etc. Luego se podrían conectar diferentes señales a cada botón y realizar la operación que el usuario seleccione.

Si la funcionalidad básica que proporcionan las cajas verticales y horizontales predeterminadas no dan el suficiente control para la aplicación, entonces se puede sencillamente empaquetar otro control dentro de las cajas proporcionadas. Por ejemplo, se podría empaquetar una tabla en la caja vertical.