GtkFr - Cours Gtk+-2

PyLaBarreDEtat

PageAccueil :: LesNews :: Telechargement :: Liens :: Forum :: LeChat :: Contact
DerniersChangements :: DerniersCommentaires :: ParametresUtilisateur :: Vous êtes 38.107.191.94
<< La barre d'outils PyGtk La sélection de valeurs numérique >>


La barre d'état

1. Présentation

La barre d'état peut avoir plusieurs utilités. Tout d'abord lorsqu'un programme est en train d'effectuer une action, elle peut servir à signaler à l'utilisateur ce que le programme fait. Elle peut aussi servir à expliquer l'utilité d'un bouton (ou d'un élément du menu).

1.1 Hiérarchie

GObject -> GtkObject -> GtkWidget -> GtkContainer -> GtkBox -> GtkHBox -> GtkStatusbar

2. Utilisation de base

2.1 Création

La création de ce widget est aussi simple que pour tous les autres widgets. Il suffit d'utiliser cette fonction :
status_bar = gtk.Statusbar()

2.2 Identification

Regardons tout d'abord comment fonctionne une GtkStatusBar. Les messages sont mis dans une pile, l'élément le plus haut de la pile étant affiché. Mais avant de pouvoir ajouter un message dans la pile, il faut que Gtk+ sache qui a envoyé le message. En effet pour la barre d'état, nous avons la possibilité de définir quelle partie (ou quel module) du programme a envoyé un message.
Donc avant de pouvoir insérer des messages, il faut créer un ou plusieurs identifiant suivant le cas avec cette fonction :
context_id = status_bar.get_context_id(context_description)
Cette fonction va automatiquement ajouter un contexte, et renvoyer la valeur correspondante. Par la suite cet identifiant est à utiliser pour ajouter ou enlever des éléments à la pile.

2.3 Ajout de message

Pour ajouter un élément, il n'y a qu'une seule fonction :
status_bar.push(context_id, text)
Le paramètre statusbar est bien sûr la barre d'état dans laquelle nous voulons ajouter un message, le paramètre context_id la valeur correspondante au contexte qui a été créé et text le texte qu'il faut afficher dans la barre d'état.
Après l'appel de cette fonction, le message est automatiquement ajouté en haut de la pile et est affiché dans la barre d'état. La valeur de retour correspond à l'identifiant du message dans la pile qui peut être utile pour sa suppression.

2.4 Suppression d'un message

Pour supprimer un message de la pile, nous avons cette fois deux fonctions différentes :
status_bar.pop(context_id)
status_bar.remove(context_id, message_id)
La première fonction enlève l'élément le plus haut placé dans la pile provenant de la partie du programme ayant l'identifiant context_id. Alors que la deuxième fonction enlève l'élément en fonction de son identifiant et celui de son contexte.

2.5 Programme exemple

Nous allons construire une application comportant deux boutons et barre d'état. Le but de cette application et d'afficher un message dans la barre d'état lorsque la souris survole un des boutons.
# -*- Encoding: Latin-1
import gtk

class Demo:
    def __init__(self):
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.set_default_size(320, 200)
        window.set_title("GtkStatusbar")
        window.connect("destroy", gtk.main_quit, None)

        vbox = gtk.VBox(False,5)
        window.add(vbox)

        exit_button = gtk.Button("Quitter")
        vbox.pack_start(exit_button, True, False, 5)
        exit_button.connect("clicked", gtk.main_quit, None)

        about_button = gtk.Button("A propos...")
        vbox.pack_start(about_button, True, False, 5)

        # Creation de la barre d'etat
        self.statusbar = gtk.Statusbar()

        vbox.pack_end(self.statusbar, False, False, 0)

        # Creation des contextes
        context_id1 = self.statusbar.get_context_id("ExitMsg")
        context_id2 = self.statusbar.get_context_id("AboutMsg")

        exit_button.connect("enter", self.OnExitBtnEnter, context_id1)
        about_button.connect("enter", self.OnAboutBtnEnter, context_id2)
        exit_button.connect("leave", self.ClearStatus, context_id1)
        about_button.connect("leave", self.ClearStatus, context_id2)

        window.show_all()

        gtk.main()

    def OnExitBtnEnter(self, button, context_id):
        # Ajout d'un message
        self.statusbar.push(context_id, "Quitter l'application")

    def OnAboutBtnEnter(self, button, context_id):
        # Ajout d'un message
        self.statusbar.push(context_id, "Informations")

    def ClearStatus(self, button, context_id):
        # Suppression d'un message
        self.statusbar.pop(context_id)

if __name__ == '__main__':
    Demo()
Résultat :





<< La barre d'outils PyGtk La sélection de valeurs numérique >>

Il n'y a pas de commentaire sur cette page. [Afficher commentaires/formulaire]
Apinc