logo oujood
🔍

Le widget Label Tkinter

Label affiche du texte ou une image dans une fenêtre Tkinter. Simple en apparence, il cache quelques options utiles que tout débutant finit par chercher.

OUJOOD.COM

Le widget Label est probablement le premier que vous utiliserez dans Tkinter. Son rôle est d'afficher du texte statique — un titre, une étiquette de champ, un message de statut. Il peut aussi afficher une image, mais on commence par le texte.

Label de base

La syntaxe minimale : un parent, un texte, et un appel à un gestionnaire de mise en page pour le rendre visible :

📋 Copier le code

import tkinter as tk

fenetre = tk.Tk()
fenetre.geometry("350x150")

label = tk.Label(fenetre, text="Bonjour, Tkinter !")
label.pack(pady=20)

fenetre.mainloop()

Sans appel à pack(), grid() ou place(), le label existe en mémoire mais n'apparaît pas à l'écran. C'est une erreur fréquente chez les débutants — créer des widgets sans les placer.

Personnaliser l'apparence

Le Label accepte de nombreuses options de style. Les plus utilisées :

📋 Copier le code

import tkinter as tk

fenetre = tk.Tk()
fenetre.geometry("400x200")
fenetre.configure(bg="#f0f0f0")

# Police, taille, couleur de texte et de fond
label_titre = tk.Label(
    fenetre,
    text="Titre principal",
    font=("Arial", 18, "bold"),
    fg="#2c3e50",
    bg="#f0f0f0"
)
label_titre.pack(pady=15)

# Texte sur plusieurs lignes avec largeur fixée
label_desc = tk.Label(
    fenetre,
    text="Ceci est une description un peu plus longue qui s'étend sur plusieurs lignes.",
    font=("Arial", 11),
    wraplength=320,      # retour à la ligne automatique après 320 px
    justify="center",
    fg="#555",
    bg="#f0f0f0"
)
label_desc.pack()

fenetre.mainloop()

Le paramètre wraplength est particulièrement utile pour les messages longs : sans lui, le texte s'étire sur une seule ligne et fait déborder la fenêtre. justify accepte "left", "center" et "right".

Mettre à jour le texte dynamiquement

Deux façons de changer le texte d'un label après sa création. La première utilise config() :

📋 Copier le code

import tkinter as tk

fenetre = tk.Tk()
fenetre.geometry("300x150")

compteur = 0

def incrementer():
    global compteur
    compteur += 1
    label.config(text=f"Clics : {compteur}")  # mise à jour directe

label = tk.Label(fenetre, text="Clics : 0", font=("Arial", 14))
label.pack(pady=20)

tk.Button(fenetre, text="Cliquer", command=incrementer).pack()

fenetre.mainloop()

La seconde utilise une StringVar liée au label via l'option textvariable. Quand la variable change, le label se met à jour automatiquement sans appeler config() :

📋 Copier le code

import tkinter as tk

fenetre = tk.Tk()
fenetre.geometry("300x150")

texte_var = tk.StringVar(value="État : en attente")

label = tk.Label(fenetre, textvariable=texte_var, font=("Arial", 12))
label.pack(pady=20)

def changer():
    texte_var.set("État : actif")  # le label se met à jour seul

tk.Button(fenetre, text="Activer", command=changer).pack()

fenetre.mainloop()

La différence entre les deux approches est surtout une question de lisibilité. config() est plus direct pour un changement ponctuel. StringVar devient intéressant quand plusieurs widgets partagent la même valeur ou quand vous voulez observer les changements depuis plusieurs endroits du code.

Options utiles à connaître

Quelques paramètres qu'on cherche souvent sans savoir comment ils s'appellent : padx et pady ajoutent un espace interne autour du texte dans le widget lui-même (à ne pas confondre avec les paramètres du même nom dans pack(), qui agissent sur l'espace extérieur). anchor contrôle l'alignement du texte dans l'espace alloué au widget — "w" pour gauche, "e" pour droite, "center" pour centré. relief et bd ajoutent une bordure, comme pour les Frame.

La suite logique : le widget Button, qui fonctionne de façon similaire mais déclenche une action au clic.

Par carabde | Mis à jour le 30 avril 2025