1. Fenêtres de dialogue standard
Tkinter dispose d'un module intégré messagebox
pour afficher des fenêtres de dialogue, comme les messages d'information, les avertissements, les erreurs et les demandes de confirmation. Ces dialogues sont pratiques pour interagir avec l'utilisateur et créer des notifications.
Importer le module messagebox
from tkinter import messagebox
Principaux types de dialogues avec messagebox
- Fenêtre d'information
Les fenêtres d'information informent l'utilisateur sur des détails importants. Utilisez la fonction
messagebox.showinfo()
.def show_info(): messagebox.showinfo("Information", "Ceci est un message d'information")
- Avertissement
Une fenêtre d'avertissement informe d'un problème potentiel ou recommande de prêter attention à une action spécifique. La fonction
messagebox.showwarning()
crée une fenêtre d'avertissement.def show_warning(): messagebox.showwarning("Avertissement", "Ceci est un message d'avertissement")
- Fenêtre d'erreur
Une fenêtre d'erreur apparaît lorsqu'une erreur se produit. La fonction
messagebox.showerror()
est idéale pour informer l'utilisateur d'une erreur.def show_error(): messagebox.showerror("Erreur", "Une erreur s'est produite !")
- Demande de confirmation d'action
Les demandes de confirmation permettent à l'utilisateur de confirmer ou d'annuler une action. La fonction
messagebox.askyesno()
retourneTrue
ouFalse
selon le choix de l'utilisateur.def confirm_exit(): response = messagebox.askyesno("Sortie", "Êtes-vous sûr de vouloir quitter ?") if response: root.quit()
2. Sélection de fichiers et de dossiers
Tkinter propose également un module filedialog
, qui permet aux utilisateurs de sélectionner des fichiers et des dossiers. Cela est utile pour des applications travaillant avec des fichiers où l'utilisateur doit charger ou sauvegarder un fichier.
Importer le module filedialog
from tkinter import filedialog
Principales fonctions de filedialog
- Ouvrir un fichier: La fonction
askopenfilename()
permet à l'utilisateur de sélectionner un fichier à ouvrir.def open_file(): file_path = filedialog.askopenfilename( title="Ouvrir un fichier", filetypes=[("Fichiers texte", "*.txt"), ("Tous les fichiers", "*.*")]) if file_path: print("Fichier sélectionné :", file_path)
- Sauvegarder un fichier: La fonction
asksaveasfilename()
permet à l'utilisateur de choisir un chemin et un nom pour sauvegarder le fichier.def save_file(): file_path = filedialog.asksaveasfilename( title="Sauvegarder un fichier", defaultextension=".txt", filetypes=[("Fichiers texte", "*.txt"), ("Tous les fichiers", "*.*")]) if file_path: print("Fichier sauvegardé sous :", file_path)
- Choisir un dossier: La fonction
askdirectory()
permet de sélectionner un dossier.def select_directory(): directory_path = filedialog.askdirectory(title="Choisir un dossier") if directory_path: print("Dossier sélectionné :", directory_path)
3. Fenêtres pop-up personnalisées
En plus des fenêtres de dialogue standard, Tkinter propose le widget Toplevel
pour créer des fenêtres pop-up personnalisées. Ces fenêtres peuvent être utilisées pour créer des fenêtres multifonctionnelles avec des champs de saisie, des boutons et d'autres éléments d'interface.
Créer une fenêtre pop-up avec Toplevel
import tkinter as tk
# Fonction pour ouvrir une fenêtre pop-up
def open_popup():
popup = tk.Toplevel(root)
popup.title("Fenêtre pop-up")
popup.geometry("300x200")
label = tk.Label(popup, text="Entrez votre nom :")
label.pack(pady=10)
entry = tk.Entry(popup)
entry.pack(pady=5)
# Bouton pour fermer la fenêtre
close_button = tk.Button(popup, text="Fermer", command=popup.destroy)
close_button.pack(pady=10)
# Fenêtre principale
root = tk.Tk()
root.title("Fenêtre principale")
root.geometry("400x300")
# Bouton pour ouvrir la fenêtre pop-up
open_button = tk.Button(root, text="Ouvrir une fenêtre pop-up", command=open_popup)
open_button.pack(pady=50)
root.mainloop()
Explication du code
tk.Toplevel(root)
crée une nouvelle fenêtre, qui s'affiche au-dessus de la fenêtre principaleroot
.- Éléments de la fenêtre: À l'intérieur de la fenêtre pop-up, vous pouvez ajouter des labels, des champs de saisie et des boutons.
- Bouton "Fermer": La fonction
popup.destroy
ferme la fenêtre pop-up.
4. Une application complète avec dialogues et fenêtres pop-up
Nous allons maintenant assembler tous les éléments abordés dans une application qui inclut des fenêtres de dialogue standard, de sélection de fichiers et une fenêtre pop-up personnalisée.
import tkinter as tk
from tkinter import messagebox, filedialog
# Fonctions pour les dialogues standard
def show_info():
messagebox.showinfo("Information", "Ceci est un message d'information")
def show_warning():
messagebox.showwarning("Avertissement", "Ceci est un message d'avertissement")
def show_error():
messagebox.showerror("Erreur", "Une erreur s'est produite !")
def confirm_exit():
response = messagebox.askyesno("Sortie", "Êtes-vous sûr de vouloir quitter ?")
if response:
root.quit()
def open_file():
file_path = filedialog.askopenfilename(title="Ouvrir un fichier", filetypes=[("Fichiers texte", "*.txt"), ("Tous les fichiers", "*.*")])
if file_path:
messagebox.showinfo("Fichier sélectionné", file_path)
def save_file():
file_path = filedialog.asksaveasfilename(title="Sauvegarder un fichier", defaultextension=".txt", filetypes=[("Fichiers texte", "*.txt"), ("Tous les fichiers", "*.*")])
if file_path:
messagebox.showinfo("Fichier sauvegardé sous", file_path)
def select_directory():
directory_path = filedialog.askdirectory(title="Choisir un dossier")
if directory_path:
messagebox.showinfo("Dossier sélectionné", directory_path)
# Fonction pour une fenêtre pop-up personnalisée
def open_popup():
popup = tk.Toplevel(root)
popup.title("Fenêtre pop-up")
popup.geometry("300x200")
tk.Label(popup, text="Entrez votre nom :").pack(pady=10)
name_entry = tk.Entry(popup)
name_entry.pack(pady=5)
tk.Button(popup, text="Fermer", command=popup.destroy).pack(pady=10)
# Fenêtre principale
root = tk.Tk()
root.title("Application avec dialogues et fenêtres pop-up")
root.geometry("400x400")
# Boutons pour appeler différents dialogues et fenêtres pop-up
tk.Button(root, text="Information", command=show_info).pack(pady=5)
tk.Button(root, text="Avertissement", command=show_warning).pack(pady=5)
tk.Button(root, text="Erreur", command=show_error).pack(pady=5)
tk.Button(root, text="Confirmation de sortie", command=confirm_exit).pack(pady=5)
tk.Button(root, text="Ouvrir un fichier", command=open_file).pack(pady=5)
tk.Button(root, text="Sauvegarder un fichier", command=save_file).pack(pady=5)
tk.Button(root, text="Choisir un dossier", command=select_directory).pack(pady=5)
tk.Button(root, text="Ouvrir une fenêtre pop-up", command=open_popup).pack(pady=20)
root.mainloop()
GO TO FULL VERSION