Vous êtes à peu près ici : Accueil  »   tutoriel PyGTK  »   PyGTK : sommaire

9.5. Les boites de dialogue

Les boites de dialogue sont très simples, et ne sont en définitive que des fenêtres dans lesquelles quelques widgets sont pré-placés. Un gtk.Dialog crée une fenêtre, place dans sa partie supérieure une boite horizontale contenant un séparateur, et place à sa suite une boite horizontale qui sera la "zone d'action" (action area).

Les boites de dialogues peuvent servir pour des messages à destination de l'utilisateur, et pour d'autres tâches similaires. Il s'agit vraiment d'un widget basique, qui ne possède en lui-même qu'une fonction :

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

L'argument title (titre) attend le texte à utiliser dans la barre de titre, parent représente la fenêtre principale de l'application, et flags (drapeaux) définit plusieurs modes d'opération pour la boite de dialogue :

  DIALOG_MODAL			# rend la boite de dialogue modale
  DIALOG_DESTROY_WITH_PARENT	# détruit la boite de dialogue quand son parent est détruit
  DIALOG_NO_SEPARATOR		# pas de séparateur entre la boite verticale et la zone d'action

L'argument buttons (boutons) est un tuple contenant pour chaque bouton une couple texte-réponse. Tous les arguments ont des valeurs par défaut et peuvent être spécifiés avec des mots-clés.

Vous savez maintenant créer une boite de dialogue. Il ne vous reste plus qu'à vous en servir. Vous pourriez placer un bouton dans la zone d'action :

  bouton = ...
  boitedialogue.action_area.pack_start(bouton, True, True, 0)
  bouton.show()

Vous pourriez également enrichir votre boite verticale d'une étiquette, par exemple. Essayer quelque chose dans ce style :

  etiquette = gtk.Label("Cool, la boite de dialogue")
  boitedialogue.vbox.pack_start(etiquette, True, True, 0)
  etiquette.show()

En guise d'exemple d'utilisation de la boite de dialogue, vous pourriez mettre deux boutons dans la zone d'action, un bouton Annuler et un bouton OK, puis placer une étiquette dans la boite verticale qui interrogerait l'utilisateur ou l'informerait d'une erreur. Vous connecteriez ensuite un signal différent à chacun des boutons et feriez en sorte que l'opération choisie soit exécutée.

Si la simple configuration par défaut (boites verticale et horizontale dans les deux zones de la fenêtre) ne vous offre pas assez de possibilités pour ce que vous souhaitez faire dans votre application, rien ne vous empêche de placer un autre widget de placement dans les boites. Il est tout à fait possible, par exemple, de placer un tableau dans la boite verticale.