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 establecen 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 transient (???) 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 de ti el usarla. Podrías empaquetar un botón en el área de acción:

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

Y podrías añadir, por ejemplo una etiqueta, al área vbox usando el empaqeutamiento, intenta 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, podrías poner dos botones en el área de acción, un botón de Cancelar y un botón de Aceptar, y una etiqueta en el área vbox , preguntando al usuario una pregunta, o informando de un error, etc. Luego podrías 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 te dan el suficiente control para tu aplicación, entonces puedes simplemente empaquetar otro control dentro de las cajas proporcionadas. Por ejemplo, podrías empaquetar una tabla dentro de la caja vertical.