Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
FORUM PYTHON F.A.Q PYTHON TUTORIELS PYTHON SOURCES PYTHON OUTILS PYTHON LIVRES PYTHON
9.8. La barre d'état

9.8. La barre d'état

La barre d'état (gtk.Statusbar) est un widget assez simple qui sert à afficher un message textuel. Elle tient à jour une pile des messages qu'on lui a donnés, de sorte que le fait de dépiler le message courant entraine le ré-affichage du précédent.

Afin de permettre l'utilisation de la même barre d'état par différentes parties d'une application, le widget gtk.Statusbar distribue des "identifiants contextuels" qui serviront à identifier différents "utilisateurs". Le message affiché est celui qui se trouve au sommet de la pile, peu importe son contexte. Les messages sont empilés suivant le schéma dernier-entré-premier-sorti, et non suivant leur identifiant contextuel.

On crée une barre d'état avec un appel à :

  barredetat = gtk.Statusbar()

On obtient un nouvel identifiant contextuel en invoquant la méthode suivante avec une courte description textuelle du contexte (context_description) :

  context_id = barredetat.get_context_id(context_description)

Trois autres méthodes agissent sur les barres d'état :

  message_id = barredetat.push(context_id, text)

  barredetat.pop(context_id)

  barredetat.remove(context_id, message_id)

La première, push() (empiler), sert à ajouter un nouveau message à barredetat. Elle renvoie un identifiant de message (message_id). Ce dernier, accompagné du context_id approprié peut être transmis plus tard à la méthode remove() (retirer) afin de retirer le message de la pile de barredetat.

La méthode pop() retire le message, ayant le context_id spécifié, qui se trouve le plus haut placé dans la pile.

Le programme d'exemple barredetat.py crée une barre d'état ainsi que deux boutons : un pour empiler des éléments dans la barre d'état, et un autre pour dépiler le dernier élément affiché. La Figure 9.9 montre le résultat :

Figure 9.9. Exemple de barre d'état

exemple de barre d'état

Voici le code source de barredetat.py :

     1   #!/usr/bin/env python
     2   
     3   # exemple barredetat.py
     4   
     5   import pygtk
     6   pygtk.require('2.0')
     7   import gtk
     8   
     9   class ExempleBarreEtat:
    10       def empiler(self, widget, donnees):
    11           tampon = " Element %d" % self.compteur
    12           self.compteur = self.compteur + 1
    13           self.barredetat.push(donnees, tampon)
    14           return
    15   
    16       def depiler(self, widget, donnees):
    17           self.barredetat.pop(donnees)
    18           return
    19   
    20       def __init__(self):
    21           self.compteur = 1
    22           # Creation d'une fenetre
    23           fenetre = gtk.Window(gtk.WINDOW_TOPLEVEL)
    24           fenetre.set_size_request(200, 100)
    25           fenetre.set_title("Exemple de barre d'etat PyGTK")
    26           fenetre.connect("delete_event", gtk.main_quit)
    27    
    28           boite_v = gtk.VBox(False, 1)
    29           fenetre.add(boite_v)
    30           boite_v.show()
    31             
    32           self.barredetat = gtk.Statusbar()      
    33           boite_v.pack_start(self.barredetat, True, True, 0)
    34           self.barredetat.show()
    35   
    36           context_id = self.barredetat.get_context_id("Exemple barredetat")
    37           
    38           bouton = gtk.Button("empiler un element")
    39           bouton.connect("clicked", self.empiler, context_id)
    40           boite_v.pack_start(bouton, True, True, 2)
    41           bouton.show()              
    42   
    43           bouton = gtk.Button("depiler le dernier element")
    44           bouton.connect("clicked", self.depiler, context_id)
    45           boite_v.pack_start(bouton, True, True, 2)
    46           bouton.show()              
    47   
    48           # On affichera toujours la fenetre a la derniere etape, de sorte que
    49           # tout apparaisse a l'ecran en un bloc.
    50           fenetre.show()
    51   
    52   def main():
    53       gtk.main()
    54       return 0
    55   
    56   if __name__ == "__main__":
    57       ExempleBarreEtat()
    58       main()
Responsable bénévole de la rubrique Python : Guillaume Duriaud - Contacter par EMail :
Vos questions techniques : forum d'entraide Python - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.