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.