Tkinter, la bibliothèque GUI intégrée de Python, simplifie la création d’interfaces utilisateur graphiques. Cependant, une disposition efficace des widgets est cruciale pour l’expérience utilisateur. Ce tutoriel explore les gestionnaires de disposition de Tkinter, vous guidant dans la construction d’interfaces bien structurées et visuellement attrayantes.
Table des matières :
- Le gestionnaire de géométrie
pack
- Le gestionnaire de géométrie
grid
- Le gestionnaire de géométrie
place
- Choisir le bon gestionnaire de disposition
1. Le gestionnaire de géométrie pack
pack
est le gestionnaire de disposition le plus simple. Il organise les widgets séquentiellement, horizontalement ou verticalement, en remplissant l’espace disponible. Il convient au prototypage rapide et aux dispositions simples, mais la gestion d’interfaces complexes avec pack
peut devenir fastidieuse.
import tkinter as tk
root = tk.Tk()
root.title("Exemple Tkinter Pack")
label1 = tk.Label(root, text="Étiquette 1")
label1.pack(side=tk.TOP, fill=tk.X) # Exemple utilisant les options side et fill
button1 = tk.Button(root, text="Bouton 1")
button1.pack(pady=10) #Ajout de marge
entry1 = tk.Entry(root, width=30)
entry1.pack()
root.mainloop()
Cet exemple montre l’utilisation de base. Des options comme side
(TOP
, BOTTOM
, LEFT
, RIGHT
), fill
(X
, Y
, BOTH
), expand
(True
/False
), et les options de marge offrent un certain contrôle, mais le positionnement précis reste difficile.
2. Le gestionnaire de géométrie grid
grid
fournit une approche plus structurée, organisant les widgets dans une table bidimensionnelle (lignes et colonnes). Cela permet un contrôle précis du placement et de la taille, le rendant adapté à la plupart des applications.
import tkinter as tk
root = tk.Tk()
root.title("Exemple Tkinter Grid")
label1 = tk.Label(root, text="Nom :")
label1.grid(row=0, column=0, sticky=tk.W) #Utilisation de sticky pour l'alignement
entry1 = tk.Entry(root)
entry1.grid(row=0, column=1, padx=5, pady=5) #Ajout de marge
label2 = tk.Label(root, text="Email :")
label2.grid(row=1, column=0, sticky=tk.W)
entry2 = tk.Entry(root)
entry2.grid(row=1, column=1, padx=5, pady=5)
button1 = tk.Button(root, text="Soumettre")
button1.grid(row=2, column=1, pady=10)
root.mainloop()
Ceci montre un formulaire simple. Les options rowspan
et columnspan
permettent aux widgets de s’étendre sur plusieurs lignes ou colonnes. sticky
(N
, S
, E
, W
) contrôle l’expansion dans une cellule.
3. Le gestionnaire de géométrie place
place
offre un contrôle précis au pixel près en utilisant des coordonnées (x, y). Il est idéal pour les éléments statiques ou les superpositions, mais moins flexible que grid
pour le redimensionnement dynamique. Le repositionnement des widgets nécessite le recalcul des coordonnées lorsque la taille de la fenêtre change.
import tkinter as tk
root = tk.Tk()
root.title("Exemple Tkinter Place")
label1 = tk.Label(root, text="Étiquette 1")
label1.place(x=50, y=50)
button1 = tk.Button(root, text="Bouton 1")
button1.place(x=150, y=50)
root.mainloop()
Ceci positionne les widgets à des coordonnées spécifiques. Bien que précis, la gestion de place
dans les applications avec des fenêtres redimensionnables ou un contenu dynamique peut être difficile.
4. Choisir le bon gestionnaire de disposition
Tkinter fournit trois gestionnaires de disposition puissants : pack
, grid
et place
. pack
est simple mais limité. grid
est polyvalent et recommandé pour la plupart des applications. place
offre un contrôle au pixel près mais manque d’adaptabilité. Le meilleur choix dépend de la complexité et des exigences de votre application. Dans la plupart des cas, grid
offre le meilleur équilibre entre flexibilité et facilité d’utilisation.