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

14.3. Les TreeView

Le TreeView n'est rien de plus qu'un conteneur pour les objets TreeViewColumn et CellRenderer, les deux vrais responsables de l'affichage des données du modèle. Il fournit également une interface pour les lignes de données affichées et pour les caractéristiques contrôlant l'affichage des données.

14.3.1. Créer un TreeView

On crée un TreeView en faisant appel à son constructeur :

  treeview = gtk.TreeView(model=None)

...où model est un objet implémentant l'interface TreeModel (en général un ListStore ou un TreeStore). Si model vaut None ou n'est pas spécifié, le TreeView ne sera associé à aucun modèle.

14.3.2. Récupérer et spécifier le modèle du TreeView

Le modèle fournissant les données au TreeView peut être récupéré avec la méthode get_model() :

  modele = treeview.get_model()

Un TreeModel peut être associé simultanément avec plusieurs TreeView qui actualiseront automatiquement leur affichage lorsque les données du TreeModel seront modifiées. Si un TreeView affiche obligatoirement toutes les lignes de son modèle, il peut en revanche n'afficher que certaines des colonnes de ce dernier. Deux TreeView associés au même TreeModel peuvent donc donner deux affichages différents des mêmes données.

Il est également important de savoir qu'il n'y a pas de relation prédéfinie entre les colonnes d'un TreeView et celles de son TreeModel. Ainsi, la cinquième colonne de données d'un TreeModel peut être affichée dans la première colonne d'un TreeView et dans la troisième d'un autre.

Un TreeView peut changer de modèle grâce à la méthode set_model() :

  treeview.set_model(model=None)

...où model est un objet implémentant l'interface TreeModel (par exemple un ListStore ou un TreeStore). Si model vaut None, le modèle courant est abandonné.

14.3.3. Les propriétés du TreeView

Le TreeView dispose de plusieurs propriétés ainsi que de méthodes pour traiter ces dernières :

"enable-search" Lecture-écriture Si elle vaut TRUE, l'utilisateur peut effectuer une recherche interactive dans les colonnes. TRUE par défaut.
"expander-column" Lecture-écriture La colonne où doit apparaitre la flèche de développement pour les lignes mères. Colonne 0 par défaut
"fixed-height-mode" Lecture-écriture Si elle vaut TRUE, toutes les lignes seront de même hauteur (ce qui accélère l'affichage). Disponible à partir de GTK+ 2.4. FALSE par défaut.
"hadjustment" Lecture-écriture L'Adjustment horizontal pour le widget. Un nouveau est créé par défaut.
"headers-clickable" Écriture Si elle vaut TRUE, les en-têtes des colonnes répondront aux clics. FALSE par défaut.
"headers-visible" Lecture-écriture Si elle vaut TRUE, les boutons d'en-tête des colonnes seront visibles. TRUE par défaut.
"model" Lecture-écriture Le modèle du TreeView. None par défaut.
"reorderable" Lecture-écriture TRUE indique la possibilité de réordonner le TreeView. FALSE par défaut.
"rules-hint" Lecture-écriture TRUE ordonne au moteur de thèmes d'alterner les couleurs des lignes. FALSE par défaut.
"search-column" Lecture-écriture La colonne du modèle dans laquelle le code de recherche interactive doit effecuer la recherche. -1 par défaut.
"vadjustment" Read-Write L'Adjustment vertical pour le widget. Un nouveau est créé par défaut.

Les méthodes correspondantes sont les suivantes :

  autorise_rechercher = treeview.get_enable_search()
  treeview.set_enable_search(enable_search)

  colonne = treeview.get_expander_column()
  treeview.set_expander_column(column)

  ajustement_horizontal = treeview.get_hadjustment()
  treeview.set_hadjustment(adjustment)

  treeview.set_headers_clickable(active)

  entetes_visibles = treeview.get_headers_visible()
  treeview.set_headers_visible(headers_visible)

  reordonner = treeview.get_reorderable()
  treeview.set_reorderable(reorderable)

  alterner_couleurs = treeview.get_rules_hint()
  treeview.set_rules_hint(setting)

  colonne = treeview.get_search_column()
  treeview.set_search_column(column)

  ajustement_vertical = treeview.get_vadjustment()
  treeview.set_vadjustment(adjustment)

Si la plupart se passent de description, signalons cependant que pour activer la propriété "enable-search" il est nécessaire d'indiquer un numéro de colonne valide à "search-column". Quand l'utilisateur pressera la combinaison de touches Control+f, une boite de dialogue de recherche apparaitra alors, dans laquelle il pourra saisir le texte à rechercher. La première ligne correspondant sera automatiquement selectionnée pendant la saisie du texte.

La propriété "headers-clickable" ne fait en réalité qu'activer la propriété "clickable" des TreeViewColumn sous-jacents. Un TreeViewColumn ne pourra pas être réordonné si le modèle n'implémente pas l'interface TreeSortable et si la méthode de TreeViewColumn set_sort_column_id() n'a pas été appelée avec un numéro de colonne valide.

La propriété "reorderable" permet à l'utilisateur de réordonner le modèle du TreeView en glissant-déposant les lignes affichées du TreeView.

La propriété "rules-hint" ne devrait être activée que dans les cas où l'on aurait beaucoup de colonnes et où l'on penserait qu'alterner les couleurs pourrait aider l'utilisateur.