Organiser des widgets dans une interface Tkinter peut devenir complexe sans une méthode simple.
Des interfaces mal organisées entraînent des applications peu attrayantes et difficiles à utiliser.
La méthode pack() simplifie l’agencement des widgets, offrant une disposition intuitive et efficace.
Créez des interfaces graphiques interactives avec Python et TKinter !
Méthode pack Tkinter : aperçu
La méthode pack en Tkinter est un système d’empilement simple pour organiser les widgets dans une interface graphique. Contrairement à d’autres méthodes de placement, elle ne nécessite pas une mise à jour complexe. Pour illustrer son fonctionnement, nous allons créer un bouton (btn) et l’associer à la méthode pack. Voici un simple exemple de son utilisation :
import tkinter as tk
# Créer la fenêtre principale
root = tk.Tk()
root.title("Exemple simple de pack() en Tkinter")
root.geometry("300x200")# Définir la taille de la fenêtre
# Créer un bouton
btn = tk.Button(root,text="Cliquez-moi")
# Utiliser la méthode pack() sans attributs pour ajouter le bouton à la fenêtre
btn.pack()# Le bouton sera centré et empilé par défaut
# Démarrer la boucle principale pour afficher la fenêtre
root.mainloop()
Cette méthode permet également de spécifier des paramètres supplémentaires comme l’attribut side, qui définit l’emplacement du widget dans la fenêtre.
Attribut side
L’attribut side permet de positionner le widget sur un côté spécifique de la fenêtre. Voici les valeurs possibles :
Valeur | Description |
---|---|
TOP | Positionne le widget en haut |
BOTTOM | Positionne le widget en bas |
LEFT | Positionne le widget à gauche |
RIGHT | Positionne le widget à droite |
Pour mieux comprendre l’importance de l’attribut side , voici un simple exemple qui montre comment il permet de positionner un widget sur un côté spécifique de la fenêtre :
import tkinter as tk
# Créer la fenêtre principale
root = tk.Tk()
root.title("Exemple simple de pack() en Tkinter")
root.geometry("300x200")# Définir la taille de la fenêtre
# Créer un bouton
btn = tk.Button(root,text="Cliquez-moi")
# Utiliser la méthode pack() sans attributs pour ajouter le bouton à la fenêtre
btn.pack(side="left")
# Démarrer la boucle principale pour afficher la fenêtre
root.mainloop()
En exécutant ce code, le bouton sera ajouté à gauche de la fenêtre :
Attribut fill
Après avoir vu l’attribut side , passons maintenant à fill , qui est tout aussi important pour la gestion de l’espace dans l’interface graphique. L’attribut fill peut prendre deux valeurs principales : fill=X et fill=Y . Il permet au widget de s’étendre sur toute la largeur (axe X) ou la hauteur (axe Y) de la fenêtre. On peut également utiliser fill=BOTH pour que le widget occupe tout l’espace disponible à la fois en hauteur et en largeur. Voici un exemple de son utilisation :
import tkinter as tk
# Créer la fenêtre principale
root = tk.Tk()
root.title("Exemple simple de pack() en Tkinter")
root.geometry("300x200")# Définir la taille de la fenêtre
# Créer un bouton
btn = tk.Button(root,text="Cliquez-moi")
btn.pack(fill="x")
# Démarrer la boucle principale pour afficher la fenêtre
root.mainloop()
Ce code étendra le bouton pour qu’il prenne toute la largeur de la fenêtre comme vous pouvez le constater dans la figure suivante :
Attribut expand
Après avoir exploré l’attribut fill , voyons maintenant l’attribut expand , qui joue un rôle clé dans l’occupation de l’espace supplémentaire. L’attribut expand permet au widget d’occuper l’espace disponible lorsque la fenêtre est redimensionnée. Il est souvent utilisé en combinaison avec fill .Voici une exemple d’utilisation de expand avec fill :
import tkinter as tk
# Créer la fenêtre principale
root = tk.Tk()
root.title("Exemple simple de pack() en Tkinter")
root.geometry("300x200")# Définir la taille de la fenêtre
# Créer un bouton
btn = tk.Button(root,text="Cliquez-moi")
btn.pack(fill="x",expand=1)
# Démarrer la boucle principale pour afficher la fenêtre
root.mainloop()
Ce code étendra le bouton sur toute la largeur et lui permettra de s’adapter à la taille de la fenêtre. Ainsi voici le résultat d’exécution de ce code :
Attribut anchor
Après avoir examiné l’attribut expand , passons maintenant à anchor , qui permet de contrôler l’ancrage des widgets. L’attribut anchor permet de positionner le widget en fonction des points cardinaux. Les options les plus utilisées sont :
Ainsi, Voici un exemple d’utilisation de anchor :
import tkinter as tk
# Créer la fenêtre principale
root = tk.Tk()
root.title("Exemple simple de pack() en Tkinter")
root.geometry("300x200")# Définir la taille de la fenêtre
# Créer un bouton
btn = tk.Button(root,text="Cliquez-moi")
btn.pack(anchor="w")
root.mainloop()
En exécutant ce code, le bouton sera aligner à gauche comme il est montré dans la figure suivante :
Attributs padx et pady
Après avoir découvert l’attribut anchor , intéressons-nous maintenant aux attributs padx et pady . Ces attributs permettent d’ajouter des marges extérieures autour du widget, respectivement sur les axes X (horizontal) et Y (vertical). Voici un exemple d’utilisation de padx et pady :
import tkinter as tk
# Créer la fenêtre principale
root = tk.Tk()
root.title("Exemple simple de pack() en Tkinter")
root.geometry("300x200")# Définir la taille de la fenêtre
# Créer un bouton
btn = tk.Button(root,text="Cliquez-moi")
btn.pack(pady=50)
root.mainloop()
Dans cet exemple, une marge de 50 pixels est ajoutée autour du bouton sur l’axe vertical. Notez que si le bouton est déjà positionné sur l’axe X avec fill, padx peut ne pas être visible.
Attributs ipadx et ipady
Les attributs ipadx et ipady ajoutent des marges internes au widget, c’est-à-dire qu’ils augmentent la taille du bouton en ajoutant de l’espace à l’intérieur.
Exemple d’utilisation de ipadx et ipady :
import tkinter as tk
# Créer la fenêtre principale
root = tk.Tk()
root.title("Exemple simple de pack() en Tkinter")
root.geometry("300x200")# Définir la taille de la fenêtre
# Créer un bouton
btn = tk.Button(root,text="Cliquez-moi")
btn.pack(ipadx=20,ipady=20)
root.mainloop()
Ce code ajoute une marge interne de 20 pixels autour du texte du bouton, augmentant ainsi sa taille. Voici le résultat d’exécution de ce code :
Exemple de pack Tkinter avec attributs
Voici un exemple d’utilisation combinée de la méthode pack et de ses attributs dans une interface Tkinter :
from tkinter import *
root = Tk()
root.title("Mon application")
root.geometry("800x600+600+200")
frm = Frame(bg="white")
frm.pack(expand=1,ipadx=20,ipady=20)
btn = Button(frm,text="Bouton 1",font="Arial 20")
btn.pack(side=LEFT,expand=1)
btn2 = Button(frm,text="Bouton 2",font="Arial 20")
btn2.pack(side=LEFT,expand=1)
root.mainloop()
Dans cet exemple, la méthode pack() est utilisée pour organiser les widgets dans une fenêtre Tkinter. La fenêtre principale est définie avec une taille et une position spécifique à l’écran grâce à root.geometry() . Un cadre ( Frame ) est ajouté avec un fond blanc et des marges internes définies par ipadx et ipady , ce qui augmente l’espace à l’intérieur du cadre. Ensuite, deux boutons sont créés dans ce cadre, disposés horizontalement à gauche ( side=LEFT ) et répartissant l’espace disponible grâce à expand=1 . Cette combinaison permet de centrer les boutons dans la fenêtre tout en ajustant leur taille à celle du cadre. Voici le résultat d’exécution de ce code :
Utilisations pratiques de pack Tkinter
La méthode pack() est utilisée dans Tkinter lorsque vous souhaitez organiser des widgets de manière simple et rapide en les empilant automatiquement dans une direction spécifique (haut, bas, gauche ou droite). Voici quelques situations où pack() est particulièrement utile :
- Disposition linéaire :Lorsque vous voulez empiler des widgets les uns au-dessus des autres (verticalement) ou côte à côte (horizontalement) sans vous soucier de leur position exacte.
- Mise en page simple :Pour des interfaces graphiques avec une structure simple et où vous n’avez pas besoin de contrôler précisément l’emplacement exact des widgets, par exemple pour placer un bouton en haut et un label en bas.
- Centrer des widgets :Avec des attributs comme expand et fill,pack()permet de centrer les widgets et de leur donner une apparence équilibrée sans configuration complexe.
- Marges et espacement :Si vous avez besoin de marges internes ou externes (avec padx, pady, ipadx, ipady),pack()gère facilement ces besoins tout en maintenant une disposition cohérente.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment utiliser la méthode pack en Tkinter ?
Quels sont les attributs de la méthode pack?
Comment positionner un widget à un endroit spécifique avec pack?
Quelle est la différence entre fill et expand dans pack?
Quels sont les avantages de la méthode pack pour les interfaces simples?
Conclusion
En explorant la méthode pack de Tkinter, vous avez découvert comment organiser vos widgets simplement et efficacement. Quelles autres méthodes de disposition utilisez-vous pour améliorer vos interfaces graphiques ?