Organiser efficacement les widgets dans une interface Tkinter peut être un défi.
Des interfaces désorganisées peuvent frustrer les utilisateurs et rendre l’application difficile à naviguer.
Cet article explore l’utilisation des conteneurs Frame et LabelFrame pour structurer vos interfaces Tkinter de manière claire et organisée.
Créez des interfaces graphiques interactives avec Python et TKinter !

Conteneurs de widgets Tkinter: Utilisation
Le conteneur Frame
Tkinter propose plusieurs types de conteneurs pour organiser les widgets dans une interface graphique. Parmi eux, nous allons explorer les conteneurs Frame et LabelFrame , qui sont très utiles pour regrouper et structurer des éléments.
Le conteneur Frame est l’un des conteneurs de base dans Tkinter. Il permet de regrouper plusieurs widgets à l’intérieur d’une même zone et de les organiser de manière flexible. Pour initialiser un Frame , voici un exemple de code :
frame = Frame(root,width=200,bg='red')
frame.pack()
Dans cet exemple, nous créons un Frame de 200 pixels de largeur, avec un arrière-plan rouge, puis nous l’ajoutons à la fenêtre principale grâce à la méthode pack() . En exécutant ce code, vous verrez une zone rouge clairement délimitée à l’intérieur de la fenêtre.
Ajouter des widgets dans un Frame
Un Frame ne sert pas uniquement à créer des zones visuelles ; il peut aussi contenir d’autres widgets comme des boutons, des labels, etc. Par exemple, nous pouvons ajouter un label à l’intérieur du Frame :
label = Label(frame,text="Ceci est un label")
label.pack()
Lorsque vous exécutez ce code, le texte « Ceci est un label » apparaîtra dans le Frame . Une caractéristique importante du Frame est qu’il s’adapte automatiquement à son contenu. Ainsi, dans cet exemple, la taille du Frame et son arrière-plan peuvent changer pour s’ajuster au widget Label ajouté à l’intérieur. En d’autres termes, la taille du conteneur et son apparence seront influencées par les propriétés des éléments qu’il contient.
En exécutant ce code voici le résultat retourné :
Structurer avec Frame et LabelFrame Tkinter
Le conteneur LabelFrame est une version améliorée du Frame . Il permet de regrouper des widgets tout en ajoutant la possibilité d’inclure un titre au conteneur. Cela le rend idéal pour des sections bien définies dans l’interface utilisateur. Voici un exemple d’utilisation de LabelFrame :
from tkinter import *
# Création de la fenêtre principale
root = Tk()
root.title("Exemple de LabelFrame")
root.geometry("300x200")
# Création du LabelFrame avec un titre
labelframe = LabelFrame(root,text="Section Titre",relief='groove',padx=10,pady=10)
labelframe.pack(padx=10,pady=10,fill="both",expand="yes")
# Ajout d'un Label à l'intérieur du LabelFrame
label = Label(labelframe,text="Ceci est un label dans le LabelFrame")
label.pack(padx=5,pady=5)
# Ajout d'un bouton à l'intérieur du LabelFrame
button = Button(labelframe,text="Cliquez ici")
button.pack(padx=5,pady=5)
# Boucle principale
root.mainloop()
Dans cet exemple, nous créons un LabelFrame avec le titre « Section Titre ». Tout comme pour le Frame , vous pouvez y ajouter d’autres widgets. Voici l’exécution de ce programme :
Propriété relief
Le LabelFrame peut être personnalisé d’avantage grâce à la propriété relief , qui définit le style des bordures du conteneur. Voici les options disponibles pour la propriété relief :
Option | Description |
---|---|
flat | Pas de relief, bordures plates |
raised | Bordures en relief |
sunken | Bordures enfoncées |
solid | Bordures pleines |
ridge | Bordures en relief avec des contours |
groove | Bordures en forme de rainure |
Par exemple, pour créer un LabelFrame avec un style en relief, vous pouvez utiliser le code suivant :
labelframe = LabelFrame(root,text="Section Titre",relief='groove')
labelframe.pack()
Ce conteneur aura une bordure en forme de rainure, ce qui le rend plus visuellement distinct. Voici le résultat d’exécution de la totalité du programme :
Propriété labelanchor
Une autre propriété intéressante du LabelFrame est labelanchor , qui permet de positionner le titre du conteneur selon les points cardinaux (nord, sud, est, ouest). Par défaut, le titre est positionné en haut (nord), mais vous pouvez le déplacer avec cette propriété. Voici un exemple :
labelframe = LabelFrame(root,text="Section Titre",labelanchor='nw')# Titre en haut à gauche
labelframe.pack()
Dans cet exemple, le titre « Section Titre » sera positionné dans le coin supérieur gauche du LabelFrame . Voici le résultat d’utilisation de ce code :
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 le conteneur Frame dans Tkinter ?
Quels widgets peuvent être ajoutés à un Frame ?
Qu'est-ce que le LabelFrame et comment l'utiliser ?
Comment personnaliser l'apparence d'un LabelFrame ?
Quels sont les avantages d'utiliser des conteneurs dans Tkinter ?
Conclusion
En maîtrisant l’utilisation des conteneurs Frame et LabelFrame dans Tkinter, vous pouvez créer des interfaces graphiques structurées et esthétiques. Quelle fonctionnalité ajouteriez-vous pour améliorer encore plus votre interface utilisateur ?