logo oujood
🔍

GUI vs CLI en Python

Quand une fenêtre vaut mieux qu'un terminal — et inversement. Les critères concrets pour choisir entre GUI et CLI.

OUJOOD.COM

Quand on apprend Python, on écrit d'abord des scripts qui tournent dans un terminal. Puis vient le moment où on se demande si une fenêtre ne serait pas plus pratique. Ce n'est pas toujours le cas — et comprendre la différence entre les deux approches évite de choisir le mauvais outil.

CLI : la ligne de commande

Une interface CLI (Command Line Interface) s'exécute dans un terminal. L'utilisateur tape des commandes, le programme répond par du texte. C'est le mode de fonctionnement par défaut de Python : print(), input(), les scripts lancés avec python3 mon_script.py.

📋 Copier le code

# Exemple CLI : calculatrice en ligne de commande
a = float(input("Premier nombre : "))
b = float(input("Deuxième nombre : "))
print(f"Résultat : {a + b}")

Rapide à écrire, facile à automatiser, idéal pour les scripts de traitement de données — c'est l'outil de prédilection quand l'utilisateur final est un développeur ou quand le programme tourne sans surveillance (tâche planifiée, pipeline de données).

GUI : l'interface graphique

Une interface GUI (Graphical User Interface) présente des fenêtres, des boutons, des champs de saisie. L'utilisateur interagit avec la souris et le clavier sans jamais ouvrir un terminal. C'est ce que fait Tkinter.

📋 Copier le code

import tkinter as tk

def calculer():
    try:
        resultat = float(entree_a.get()) + float(entree_b.get())
        label_resultat.config(text=f"Résultat : {resultat}")
    except ValueError:
        label_resultat.config(text="Entrée invalide")

fenetre = tk.Tk()
fenetre.title("Calculatrice GUI")
fenetre.geometry("300x180")

entree_a = tk.Entry(fenetre)
entree_a.pack(pady=5)

entree_b = tk.Entry(fenetre)
entree_b.pack(pady=5)

tk.Button(fenetre, text="Additionner", command=calculer).pack(pady=5)
label_resultat = tk.Label(fenetre, text="")
label_resultat.pack()

fenetre.mainloop()

Le même programme, mais sous forme de fenêtre. Le code est plus long — c'est le prix habituel d'une interface graphique.

Quand choisir l'un ou l'autre

Il n'y a pas de réponse universelle, mais quelques critères tranchent vite la question.

Choisissez une CLI quand : le programme est destiné à des développeurs ou à des systèmes automatisés, quand les données d'entrée viennent de fichiers ou de pipes, quand la vitesse de développement prime, ou quand le script sera exécuté sur un serveur sans affichage.

Choisissez une GUI quand : l'utilisateur final n'est pas à l'aise avec le terminal, quand le programme implique de sélectionner des fichiers ou de visualiser des résultats, quand vous construisez un outil interne destiné à des non-développeurs, ou quand l'interaction est suffisamment complexe pour mériter des formulaires et des retours visuels.

À titre d'exemple, un script d'analyse de données avec Pandas ou NumPy se prête très bien à une CLI — on le lance, il produit un résultat. Mais si vous voulez que l'utilisateur choisisse un fichier CSV et visualise les graphiques Matplotlib dans une fenêtre dédiée, une GUI Tkinter a du sens.

Les limites de Tkinter

Tkinter convient pour des outils internes, des projets personnels ou des prototypes. Pour une application destinée à un large public, d'autres options existent : PyQt6, wxPython ou Dear PyGui offrent des interfaces plus modernes. Mais pour apprendre les concepts de base d'une GUI en Python, Tkinter reste le point de départ le plus accessible — il est déjà installé, il n'a pas de dépendances externes, et sa documentation est bien fournie.

La prochaine étape : comprendre le widget Frame, le conteneur de base autour duquel s'organisent tous les autres widgets.

Par carabde | Mis à jour le 30 avril 2025