logo oujood
🔍

Créer la première fenêtre Tkinter

De l'import à l'affichage : comprendre Tk(), geometry() et mainloop() sans jargon inutile.

OUJOOD.COM

Avant d'afficher des boutons ou des champs de saisie, il faut une fenêtre. C'est le point de départ de toute application Tkinter : créer un objet Tk(), lui donner une taille, puis lancer la boucle d'événements.

La structure minimale

Trois lignes suffisent pour ouvrir une fenêtre vide :

📋 Copier le code

import tkinter as tk

fenetre = tk.Tk()
fenetre.mainloop()

En exécutant ce script, une fenêtre grise apparaît. Elle reste ouverte tant que vous ne la fermez pas — c'est le rôle de mainloop() : garder le programme en vie et écouter les actions de l'utilisateur (clics, frappes clavier, fermeture).

Donner un titre et une taille

Une fenêtre sans titre s'appelle « tk » par défaut. On corrige ça avec title(), et on fixe les dimensions avec geometry() :

📋 Copier le code

import tkinter as tk

fenetre = tk.Tk()
fenetre.title("Mon application")
fenetre.geometry("400x300")  # largeur x hauteur en pixels
fenetre.mainloop()

La chaîne passée à geometry() suit le format "LargeurxHauteur" — le séparateur est bien la lettre x, pas le signe multiplier. On peut aussi ajouter une position à l'écran : "400x300+100+50" place la fenêtre à 100 px du bord gauche et 50 px du bord supérieur.

Ce qui se passe derrière mainloop()

Beaucoup de débutants se demandent pourquoi le code après mainloop() ne s'exécute pas. La réponse est simple : mainloop() est une boucle bloquante. Tant que la fenêtre est ouverte, l'interpréteur reste coincé là. Ce n'est qu'à la fermeture que l'exécution reprend — si tant est qu'il reste du code.

Cette architecture est commune à tous les frameworks graphiques, pas seulement Tkinter. Vous la retrouverez dans Pygame (voir Matplotlib pour la visualisation de données) ou dans tout autre outil qui gère une interface.

Exemple complet avec commentaires

📋 Copier le code

import tkinter as tk

# Création de la fenêtre principale
fenetre = tk.Tk()

# Titre affiché dans la barre du système
fenetre.title("Première fenêtre")

# Dimensions : 500 px de large, 350 px de haut
fenetre.geometry("500x350")

# Couleur de fond (optionnel)
fenetre.configure(bg="#f0f0f0")

# Lancement de la boucle d'événements — bloquant
fenetre.mainloop()

À ce stade la fenêtre est vide. La prochaine étape consiste à y ajouter des widgets — on commence souvent par un Label ou un Button.

Rappel sur l'import

Deux styles d'import coexistent dans les tutoriels que vous trouverez en ligne :

📋 Copier le code

# Style 1 : recommandé, évite les conflits de noms
import tkinter as tk
fenetre = tk.Tk()

# Style 2 : pratique pour les petits scripts, déconseillé en production
from tkinter import *
fenetre = Tk()

Le premier style est préférable dès que votre code dépasse quelques lignes : il rend explicite l'origine de chaque élément et évite que Button ou Entry écrasent des noms déjà utilisés dans votre script.

Si vous souhaitez comparer cette approche avec d'autres bibliothèques de visualisation Python, jetez un œil à Pandas ou NumPy — des outils différents, mais qui s'interfacent souvent avec des interfaces Tkinter dans des projets réels.

Par carabde | Mis à jour le 30 avril 2025