OUJOOD.COM
Par défaut, une fenêtre Tkinter s'intitule « tk » et arbore l'icône Tk générique. Deux méthodes permettent de personnaliser ça — title() pour le texte et iconphoto() ou iconbitmap() pour l'image.
Définir et modifier le titre
title() peut être appelée à tout moment, pas seulement à la création :
import tkinter as tk
fenetre = tk.Tk()
fenetre.title("Mon application")
fenetre.geometry("380x180")
contenu_modifie = [False]
def modifier_contenu():
contenu_modifie[0] = True
# Ajouter un astérisque pour signaler des modifications non sauvegardées
fenetre.title("Mon application *")
label.config(text="Contenu modifié (non sauvegardé)")
def sauvegarder():
contenu_modifie[0] = False
fenetre.title("Mon application")
label.config(text="Sauvegardé ✓")
frame = tk.Frame(fenetre)
frame.pack(pady=20)
tk.Button(frame, text="Modifier", command=modifier_contenu).pack(side="left", padx=8)
tk.Button(frame, text="Sauvegarder", command=sauvegarder).pack(side="left", padx=8)
label = tk.Label(fenetre, text="Aucune modification")
label.pack()
fenetre.mainloop()
Afficher un astérisque dans le titre pour signaler des modifications non sauvegardées est une convention courante dans les éditeurs de texte et les IDEs. C'est une façon simple d'informer l'utilisateur sans boîte de dialogue.
Icône avec iconphoto() — PNG recommandé
iconphoto() accepte un objet PhotoImage chargé depuis un fichier PNG ou GIF :
import tkinter as tk
fenetre = tk.Tk()
fenetre.title("Application avec icône")
fenetre.geometry("360x160")
# Charger une icône PNG (16x16 ou 32x32 recommandé)
try:
icone = tk.PhotoImage(file="icone.png")
fenetre.iconphoto(True, icone)
# True : applique l'icône à toutes les fenêtres futures de l'application
except tk.TclError:
pass # le fichier n'existe pas — on continue sans icône
tk.Label(fenetre, text="Regardez l'onglet dans la barre des tâches",
font=("Arial", 11), wraplength=300).pack(expand=True)
fenetre.mainloop()
PhotoImage supporte nativement les PNG et les GIF — pas les JPEG. Pour des formats supplémentaires (JPEG, ICO, SVG), il faut la bibliothèque Pillow (pip install Pillow) et utiliser ImageTk.PhotoImage à la place. La variable icone doit rester en vie (stockée dans une variable, pas anonyme) — sinon Python la supprime par garbage collection et l'icône disparaît.
Icône avec iconbitmap() — format ICO sur Windows
Sur Windows, iconbitmap() avec un fichier .ico donne le meilleur résultat dans la barre des tâches :
import tkinter as tk
import platform
fenetre = tk.Tk()
fenetre.title("Icône multiplateforme")
fenetre.geometry("340x140")
# Adapter la méthode selon le système
if platform.system() == "Windows":
try:
fenetre.iconbitmap("icone.ico")
except tk.TclError:
pass
else:
try:
icone = tk.PhotoImage(file="icone.png")
fenetre.iconphoto(True, icone)
except tk.TclError:
pass
tk.Label(fenetre, text=f"Système : {platform.system()}",
font=("Arial", 12)).pack(expand=True)
fenetre.mainloop()
iconbitmap() fonctionne principalement sous Windows — elle peut provoquer des erreurs sur Linux ou macOS selon la version de Tk installée. L'approche conditionnelle avec platform.system() est plus robuste pour du code multiplateforme. Pour les projets qui intègrent des images plus largement, Pillow est de toute façon une dépendance habituelle.
Par carabde | Mis à jour le 30 avril 2025