Python GUI Programming

Maîtrise de la gestion des dispositions Tkinter : pack, grid et place

Spread the love

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 :

  1. Le gestionnaire de géométrie pack
  2. Le gestionnaire de géométrie grid
  3. Le gestionnaire de géométrie place
  4. 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *