CodeGym /Cours Java /Python SELF FR /Travailler avec des fenêtres de dialogue et des pop-ups

Travailler avec des fenêtres de dialogue et des pop-ups

Python SELF FR
Niveau 50 , Leçon 1
Disponible

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

  1. 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")
                
  2. 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")
                
  3. 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 !")
                
  4. Demande de confirmation d'action

    Les demandes de confirmation permettent à l'utilisateur de confirmer ou d'annuler une action. La fonction messagebox.askyesno() retourne True ou False 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

  1. 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)
                
  2. 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)
                
  3. 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 principale root.
  • É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()
    
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION