Python - Programmation GUI : Guide Ultime pour les Débutants sur la Création d'Interfaces Utilisateur Graphiques

Bonjour à toi, aspirant programmeur ! Es-tu prêt à embarquer dans un voyage passionnant dans le monde de la programmation GUI avec Python ? En tant que ton enseignant en informatique de quartier, je suis là pour te guider à travers le royaume fascinant de la création d'interfaces utilisateur graphiques en utilisant Python. Ne t'inquiète pas si tu as jamais écrit une ligne de code auparavant – nous allons commencer par les bases et travailler notre chemin vers le haut. Alors, prends une tasse de ton boisson préférée, installe-toi confortablement, et plongeons-y !

Python - GUI Programming

Programmation Tkinter : Ta Porte d'Entrée dans la Création de GUI

Qu'est-ce que Tkinter ?

Tkinter est comme le couteau suisse de la programmation GUI en Python. C'est un module intégré qui est pré-installé avec Python, ce qui rend son utilisation incroyablement facile. Penses à Tkinter comme à ta boîte à outils fiable pour construire des fenêtres, des boutons, des champs de texte et tous sorts d'éléments interactifs dans tes programmes.

Ton Premier Programme Tkinter

Commençons par un exemple simple pour nous initier :

import tkinter as tk

root = tk.Tk()
root.title("Ma Première GUI")
label = tk.Label(root, text="Bonjour, Tkinter !")
label.pack()
root.mainloop()

Analysons cela :

  1. Nous importons le module tkinter et lui donnons l'alias 'tk' pour plus de commodité.
  2. tk.Tk() crée notre fenêtre principale.
  3. Nous définissons le titre de la fenêtre avec root.title().
  4. Nous créons un widget d'étiquette avec du texte.
  5. La méthode pack() ajoute notre étiquette à la fenêtre.
  6. Enfin, mainloop() démarre la boucle d'événements, ce qui garde notre fenêtre ouverte et réactive.

Exécute ce code, et voilà ! Tu viens de créer ta première application GUI. C'est assez cool, non ?

Widgets Tkinter : Les Blocs de Construction de Ta GUI

Les widgets sont les éléments individuels qui composent ta GUI. Ils sont comme les briques LEGO de la conception d'interface. Explorons certains widgets courants :

Boutons

Les boutons sont probablement le widget le plus familier. Voici comment en créer un :

import tkinter as tk

def button_click():
print("Bouton cliqué !")

root = tk.Tk()
bouton = tk.Button(root, text="Clique-moi !", command=button_click)
bouton.pack()
root.mainloop()

Dans cet exemple, nous avons créé un bouton qui imprime un message lorsque l'on clique dessus. Le paramètre command relie le bouton à la fonction button_click.

Widgets d'Entrée

Les widgets d'entrée permettent aux utilisateurs de saisir du texte :

import tkinter as tk

root = tk.Tk()
entry = tk.Entry(root)
entry.pack()
root.mainloop()

Cela crée un simple champ de saisie de texte. Tu peux récupérer le texte avec entry.get().

Attributs Standard : Personnalisation de Tes Widgets

Les widgets ont divers attributs que tu peux personnaliser. Voici quelques-uns des plus courants :

Attribut Description Exemple
bg Couleur de fond bouton = tk.Button(root, text="Clique", bg="bleu")
fg Couleur de premier plan (texte) étiquette = tk.Label(root, text="Bonjour", fg="rouge")
font Police et taille du texte étiquette = tk.Label(root, text="Grand", font=("Arial", 20))
width Largeur du widget entry = tk.Entry(root, width=30)
height Hauteur du widget texte = tk.Text(root, height=5)

Gestion de la Géométrie : Arrangement de Tes Widgets

Tkinter offre trois gestionnaires de géométrie principaux pour arranger les widgets dans ta fenêtre :

Pack

Nous avons déjà vu pack() en action. C'est le moyen le plus simple d'ajouter des widgets :

import tkinter as tk

root = tk.Tk()
étiquette1 = tk.Label(root, text="Premier")
étiquette2 = tk.Label(root, text="Deuxième")
étiquette1.pack()
étiquette2.pack()
root.mainloop()

Cela empile les widgets verticalement.

Grid

Grid permet un placement plus précis :

import tkinter as tk

root = tk.Tk()
étiquette1 = tk.Label(root, text="Nom :")
entry1 = tk.Entry(root)
étiquette2 = tk.Label(root, text="Mot de passe :")
entry2 = tk.Entry(root, show="*")

étiquette1.grid(row=0, column=0)
entry1.grid(row=0, column=1)
étiquette2.grid(row=1, column=0)
entry2.grid(row=1, column=1)

root.mainloop()

Cela crée un simple formulaire de connexion avec des étiquettes et des entrées alignées dans une grille.

Place

Place te donne un contrôle absolu sur la position des widgets :

import tkinter as tk

root = tk.Tk()
bouton = tk.Button(root, text="Bouton Centré")
bouton.place(relx=0.5, rely=0.5, anchor="center")
root.mainloop()

Cela place un bouton au centre de la fenêtre.

SimpleDialog : Fenêtres de Dialogue Rapides et Faciles

SimpleDialog est génial pour créer des fenêtres contextuelles rapides :

from tkinter import simpledialog

résultat = simpledialog.askstring("Entrée", "Quel est ton nom ?")
print(f"Bonjour, {résultat} !")

Cela crée une boîte de dialogue demandant le nom de l'utilisateur.

Le Module FileDialog : Travailler avec des Fichiers

FileDialog t'aide à créer des dialogues d'ouverture et d'enregistrement de fichiers :

from tkinter import filedialog

chemin_fichier = filedialog.askopenfilename()
print(f"Tu as sélectionné : {chemin_fichier}")

Cela ouvre une boîte de dialogue de sélection de fichiers et imprime le chemin du fichier choisi.

Le Module ttk : Widgets Thématisés

Le module ttk offre des widgets thématisés qui ont un look plus moderne :

from tkinter import ttk

root = tk.Tk()
bouton = ttk.Button(root, text="Bouton Thématisé")
bouton.pack()
root.mainloop()

Widget Combobox

Combobox est une combinaison d'un champ de saisie et d'une liste déroulante :

from tkinter import ttk

root = tk.Tk()
combo = ttk.Combobox(root, values=["Option 1", "Option 2", "Option 3"])
combo.pack()
root.mainloop()

Barre de Progression

La barre de progression est géniale pour montrer la progression des tâches :

from tkinter import ttk

root = tk.Tk()
progress = ttk.Progressbar(root, length=200, mode='déterminé')
progress.pack()
progress['value'] = 50  # Définir la progression à 50%
root.mainloop()

Sizegrip

Sizegrip permet aux utilisateurs de redimensionner les fenêtres :

from tkinter import ttk

root = tk.Tk()
sizegrip = ttk.Sizegrip(root)
sizegrip.pack(side="right", anchor="se")
root.mainloop()

Séparateur

Le séparateur est utilisé pour séparer visuellement les widgets :

from tkinter import ttk

root = tk.Tk()
étiquette1 = tk.Label(root, text="Au-dessus")
séparateur = ttk.Separator(root, orient='horizontal')
étiquette2 = tk.Label(root, text="En-dessous")

étiquette1.pack()
séparateur.pack(fill='x')
étiquette2.pack()
root.mainloop()

Et voilà ! Nous avons couvert les bases de la programmation GUI en Python utilisant Tkinter. souviens-toi, la pratique fait le maître, alors n'aie pas peur d'expérimenter et de créer tes propres GUI. Qui sait ? Ton prochain projet pourrait être l'application la plus populaire que tout le monde parle de !

Bon codage, futurs sorciers GUI ! ?‍♂️??

Credits: Image by storyset