Formation PUB400 : Python, 2018 Environnement graphique tkinter

9.19 Ajuster l'apparence d'un TreeView


Le widget Treeview nous offre la possibilité de modifier l'apparence générale du tableau, de sa ligne d'entête et des colonnes.

Voici un exemple de tableau de données affiché à l'aide d'un Treeview auquel aucun style n'a été appliqué.

Python

tableau = Treeview(fenetre, columns=('code', 'description'))

tableau.heading('code', text='Code')

tableau.heading('description', text='Description')

 

...

 

for enreg in resultat:
    tableau.insert('', 'end', iid=enreg[0], values=(enreg[1], enreg[2]))

TreeView non stylisé

Colonne de gauche

Dans un Treeview, la première colonne à gauche permet d'afficher une icône qui pourra développer ou réduire un noeud (afficher ou masquer les enfants d'un item).

Quand on n'utilise pas de hiérarchie entre les items, comme c'est le cas lorsqu'on utilise le Treeview pour afficher les données d'une table, cette colonne n'a pas sa raison d'être.

Il est possible de la faire disparaître comme suit :

Python

tableau['show'] = 'headings'

TreeView non stylisé

Barre de défilement

La première chose qu'on remarque lorsqu'un Treeview affiche plusieurs lignes de données, c'est qu'il manque une barre de défilement.

Pour ajouter une barre de défilement, il faut travailler avec le widget Scrollbar.

Ex :

Python

scrollbar = Scrollbar(fenetre)

scrollbar.pack(side=RIGHT, fill=Y)

tableau = Treeview(fenetre, columns=('code', 'description'), yscrollcommand=scrollbar.set)

...

tableau.pack(padx=10, pady=10)

scrollbar.config(command=tableau.yview)

TreeView avec ScrollBar

Apparance générale du tableau

Comme tous les widgets du paquet tkinter, il est possible de styliser un Treeview.

On utilisera l'instruction Style().configure(). Il faut lui passer comme premier paramètre le type de widget à styliser (ici : Treeview). On fournit ensuite une liste de paires clé=valeur pour chacune des configurations désirées.

Parmi les configurations possibles, notons :

  • background : la couleur de fond des lignes de données
  • fieldbackground : la couleur de fond des endroits où il n'y a pas de données
  • font : la police de caractères des données
  • foreground : la couleur du texte pour les données
  • indent : pour ajuster l'indentation des lignes qui sont des enfants d'une autre ligne
  • padding : espace, en pixels, entre les données et les bordures du Treeview
  • rowheight : hauteur de ligne en pixels

Ex :

Python

Style().configure("Treeview", background="beige", foreground="black")

Lignes beiges

Entête du tableau

La fonction heading() permet de spécifier ce qui doit apparaître dans l'entête d'une colonne.

On spécifiera :

  • L'identifiant de la colonne, tel que spécifié lors de la création du tableau
  • text : le texte à afficher dans l'entête
  • command : une fonction à exécuter lorsque l'usager clique sur l'entête de la colonne
  • image :  pour ajouter une image dans l'entête
  • anchor : l'alignement du texte dans la colonne, identifié selon les points cardinaux : n, ne, e, se, s, sw, w, nw, ou center. Par défaut : w.

Ex :

Python

tableau = Treeview(fenetre, columns=('code', 'description'))

...

tableau.heading('code', text='Code', anchor='center')

tableau.heading('description', text='Description', anchor='w')

Pour ce qui est de l'apparence, on pourra la modifier à l'aide de Style().configure(). Cette fois, le premier paramètre sera Treeview.Heading.

Parmi les configurations possibles, notons :

  • background : la couleur de fond
  • font : la police de caractères
  • foreground : la couleur du texte
  • padding : espace, en pixels, entre le texte de l'entête et les bordures de l'entête

Ex :

Python

Style().configure("Treeview.Heading", foreground='gray', font=('Helvetica', 12), padding=5)

Entête

Colonnes

La fonction column() permet de spécifier l'apparence d'une colonne.

On spécifiera :

  • L'identifiant de la colonne, tel que spécifié lors de la création du tableau
  • minwidth : la largeur minimale de la colonne en pixels. Par défaut, les colonnes ont minimalement 20 pixels de large.
  • width : la largeur de la colonne. Par défaut : 200 pixels.
  • stretch : True si on veut que la taille de la colonne s'ajuste lorsque le Treeview change de dimension. Par défaut : True.
  • anchor l'alignement du texte dans la colonne. Par défaut : w.

Ex :

Python

tableau = Treeview(fenetre, columns=('code', 'description'))

...

tableau.column('code', width=60, anchor='center')

Colonnes

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre