CodeGym /Cours /Python SELF FR /Les bases de la disposition des éléments d'interface (gri...

Les bases de la disposition des éléments d'interface (grid, pack)

Python SELF FR
Niveau 50 , Leçon 0
Disponible

1. Les méthodes de disposition des éléments dans Tkinter

Comme tu as pu le remarquer, les interfaces graphiques ne se limitent pas seulement à des boutons et des champs de texte placés au hasard sur l'écran. Ce sont des applications bien structurées et ergonomiques, où chaque détail est à sa place. Tkinter offre trois méthodes principales de disposition : pack, grid et place. Aujourd'hui, on va se concentrer sur pack et grid, en laissant place pour des compositions plus complexes ou des situations nécessitant un positionnement absolu des éléments.

Introduction à pack

La méthode pack est une manière simple et intuitive de placer des widgets. Elle dispose les éléments sur le principe du "premier arrivé, premier servi" et permet de structurer rapidement et sans douleur une interface. Cependant, en raison de sa simplicité, elle ne donne pas toujours un contrôle précis sur la position exacte des éléments.

Exemple d'utilisation de pack


import tkinter as tk

root = tk.Tk()
root.title("Exemple de disposition avec pack")

# Création de quelques widgets
label = tk.Label(root, text="Je suis une étiquette")
button = tk.Button(root, text="Je suis un bouton")

# Placement des widgets avec pack
label.pack()
button.pack()

root.mainloop()

Dans cet exemple, label et button sont simplement placés l'un en dessous de l'autre, comme dans une file d'attente amicale pour un café. Peut-être que les gars de Starbucks savent comment ça fonctionne !

Introduction à grid

Si pack est un joyeux festival désordonné, alors grid est une bibliothèque classique où chaque livre (c'est-à-dire le widget) a sa place exacte sur l'étagère. La méthode grid permet de disposer les éléments sous forme de grille, offrant un contrôle précis sur le positionnement. Ici, c'est toi qui décide quels éléments seront à côté des autres.

Exemple d'utilisation de grid


import tkinter as tk

root = tk.Tk()
root.title("Exemple de disposition avec grid")

# Création de boutons
buttons = [
    "1", "2", "3",
    "4", "5", "6",
    "7", "8", "9",
    "0", "+", "="
]

# Ajout des boutons dans la grille
row_val = 0
col_val = 0

for button in buttons:
    btn = tk.Button(root, text=button, width=5)
    btn.grid(row=row_val, column=col_val)
    col_val += 1
    if col_val > 2:
        col_val = 0
        row_val += 1

root.mainloop()

Dans cet exemple, les boutons avec grid se rangent en formation comme lors d'un appel du matin, ce qui donne un aspect plus organisé et professionnel.

2. Utilisation de pack pour le placement

La méthode pack dispose de plusieurs modes qui permettent de contrôler comment les éléments s'intègrent les uns par rapport aux autres. Elle prend en charge des paramètres comme side, fill, expand et padx/pady.

Configuration de pack

  • side : Définit de quel côté du conteneur parent l'élément sera placé. Cela peut être TOP, BOTTOM, LEFT, ou RIGHT.
  • fill : Si l'élément remplit ou non l'espace libre le long d'un axe. Par exemple, X remplira horizontalement, et Y verticalement.
  • expand : Indique au gestionnaire de disposition si l'élément doit occuper un espace supplémentaire s'il y en a.
  • padx/pady : Définit les marges horizontales et verticales.

Exemple d'utilisation avancée de pack


import tkinter as tk

root = tk.Tk()
root.title("Exemple avancé de pack")

tk.Label(root, text="En haut").pack(side=tk.TOP, fill=tk.X)
tk.Label(root, text="En bas").pack(side=tk.BOTTOM, fill=tk.X)
tk.Label(root, text="À gauche").pack(side=tk.LEFT, fill=tk.Y)
tk.Label(root, text="À droite").pack(side=tk.RIGHT, fill=tk.Y)

root.mainloop()

3. Utilisation de grid pour une disposition en grille

La méthode grid est plus complexe et nécessite une compréhension des principes de fonctionnement des grilles et des cellules. Mais une fois maîtrisée, elle permet de créer des interfaces de toute complexité.

Configuration de grid

  • row / column : Définit dans quelle ligne ou colonne l'élément sera placé.
  • rowspan / columnspan : Définit combien de lignes ou de colonnes l'élément occupera.
  • sticky : Définit comment l'élément "colle" aux bords de la cellule. Les paramètres peuvent être N, E, S, W et leurs combinaisons.

Exemple d'utilisation avancée de grid


import tkinter as tk

root = tk.Tk()
root.title("Exemple avancé de grid")

# Création d'étiquettes et leur placement dans la grille
tk.Label(root, text="Ligne 0, Colonne 0").grid(row=0, column=0, sticky="W")
tk.Label(root, text="Ligne 0, Colonne 1").grid(row=0, column=1, sticky="E")
tk.Label(root, text="Ligne 1, Colonne 0").grid(row=1, column=0, columnspan=2)

root.mainloop()

4. Utilisation pratique et erreurs courantes

Il peut être tentant d'utiliser une seule méthode de disposition, mais en pratique, une combinaison des deux est souvent nécessaire. Les erreurs fréquentes incluent : oublier d'appeler mainloop, mal indiquer l'index de la ligne ou de la colonne, ne pas utiliser expand et fill quand c'est nécessaire. Pour éviter les maux de tête lors du développement d'interfaces, vérifie toujours l'ordre d'appel de pack ou grid et assure-toi de bien utiliser leurs paramètres.

La différence entre pack et grid réside dans leur flexibilité et le contrôle sur la disposition des éléments. pack est pratique pour des interfaces simples verticales ou horizontales, tandis que grid est parfait pour des mises en page complexes où la position exacte des éléments est cruciale.

Maintenant que tu es prêt à concevoir tes propres interfaces en utilisant les méthodes de disposition, souviens-toi que placer des widgets à l'écran, c'est un peu comme organiser une fête où tout le monde doit se sentir à l'aise. Certains préféreront rester collés au mur, d'autres se promèneront au centre de la pièce, mais chacun doit se sentir à sa place. Lance-toi et crée des interfaces incroyables !

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION