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

14.5. TreeViewColumn

14.5.1. Créer des TreeViewColumn

La fonction de création du TreeViewColumn est la suivante :

  treeviewcolumn = gtk.TreeViewColumn(titre=None, cell_renderer=None, ...)

... où titre est la chaîne utilisée comme en-tête de colonne et cell_renderer est le premier CellRenderer placé dans la colonne. Les autres arguments pouvant être passés au constructeur sont des mots-clés (sous la forme attribute=colonne) qui donnent des attributs au cell_renderer. Par exemple :

  treeviewcolumn = gtk.TreeViewColumn('États', cellule, text=0, foreground=1)

... crée un TreeViewColumn dont le CellRendererText récupére son texte dans la première colonne du TreeModel et la couleur du texte dans la seconde.

14.5.2. Gérer les CellRenderer

On peut ajouter un CellRenderer à un TreeViewColumn par l'une de ces méthodes :

  treeviewcolumn.pack_start(cell, expand)
  treeviewcolumn.pack_end(cell, expand)

Les méthodes pack_start() et pack_end() ajoutent une cellule respectivement au début ou à la fin du TreeViewColumn. Si le paramètre expand est réglé sur TRUE, la cellule s'étirera pour remplir tout l'espace donné par le TreeViewColumn.

La méthode get_cell_renderers() :

  liste_cell = treeviewcolumn.get_cell_renderers()

renvoie une liste de tous les CellRenderer de la colonne.

La méthode clear() enlève tous les attributs de CellRenderer du TreeViewColumn :

  treeviewcolumn.clear()

Il y a un grand nombre d'autres méthodes disponibles pour le TreeViewColumn - principalement pour fixer ou retouver des propriétés. On trouvera davantage de renseignements sur les propriétés du TreeViewColumn dans le PyGTK Reference Manual. La possibilité de faire appel ou non à la fonction de tri intégré s'installe ainsi ;

  treeviewcolumn.set_sort_column_id(sort_column_id)

... définit sort_column_id comme étant l'identifiant de classement de colonne du treemodel à utiliser lors du tri de l'affichage du TreeView. Cette méthode active aussi la propriété "clickable" de la colonne et permet ainsi à l'utilisateur de cliquer sur l'en-tête de colonne pour réaliser le classement. Quand l'utilisateur clique sur cet en-tête, l'identifiant de classement de colonne du TreeViewColumn est défini comme étant l'identifiant de classement de colonne du TreeModel et les lignes sont réordonnées selon la fonction associée de comparaison de classement. La fonction de classement automatique inverse également l'ordre de classement de la colonne et contrôle l'affichage de l'indicateur de classement. On trouvera plus de renseignements au sujet des identifiants de classement de colonne et des fonctions de comparaison de tri dans Section 14.2.9, « Ordonner les lignes d'un TreeModel ». En règle générale, lorsqu'on utilise un ListStore ou un TreeStore, l'identifiant de classement de colonne par défaut (c'est-à-dire l'index de la colonne) de la colonne du TreeModel associée au TreeViewColumn est défini comme étant l'identifiant de classement de colonne du TreeViewColumn.

Si on se sert des en-têtes de colonne du TreeViewColumn pour le classement avec la méthode set_sort_column_id(), il n'est pas nécessaire d'utiliser la méthode de TreeSortable set_sort_column_id().

Il est possible de tracer les opérations de tri ou d'utiliser le clic sur l'en-tête à d'autres fins en le connectant au signal "clicked" de la colonne du TreeView. La fonction de rappel doit être de la forme :

  def callback(treeviewcolumn, donnees_utilisateur, ...)