1. Finestre di dialogo standard
Tkinter ha un modulo integrato messagebox
per mostrare finestre di dialogo come messaggi informativi, avvisi, errori e richieste di conferma. Questi dialoghi sono utili per comunicare con l'utente e creare notifiche.
Importa il modulo messagebox
from tkinter import messagebox
Tipi principali di dialoghi con messagebox
- Finestra informativa
Le finestre informative comunicano informazioni importanti all'utente. Si utilizza la funzione
messagebox.showinfo()
.def show_info(): messagebox.showinfo("Informazione", "Questo è un messaggio informativo")
- Avvertenza
Una finestra di avvertenza segnala un potenziale problema o consiglia di prestare attenzione a un'azione specifica. La funzione
messagebox.showwarning()
crea una finestra di avvertenza.def show_warning(): messagebox.showwarning("Avvertimento", "Questo è un messaggio di avvertimento")
- Finestra di errore
Una finestra di errore viene mostrata quando si verifica un errore. La funzione
messagebox.showerror()
è utile per notificare all'utente l'errore.def show_error(): messagebox.showerror("Errore", "Si è verificato un errore!")
- Richiesta di conferma di un'azione
Le richieste di conferma permettono all'utente di confermare o annullare un'azione. La funzione
messagebox.askyesno()
ritornaTrue
oFalse
in base alla scelta dell'utente.def confirm_exit(): response = messagebox.askyesno("Uscita", "Sei sicuro di voler uscire?") if response: root.quit()
2. Selezione di file e cartelle
Tkinter offre anche il modulo filedialog
, che consente agli utenti di selezionare file e cartelle. È utile per applicazioni che lavorano con file, dove è necessario che l'utente carichi o salvi un file.
Importa il modulo filedialog
from tkinter import filedialog
Funzioni principali di filedialog
- Apri file: La funzione
askopenfilename()
permette all'utente di scegliere un file da aprire.def open_file(): file_path = filedialog.askopenfilename( title="Apri file", filetypes=[("File di testo", "*.txt"), ("Tutti i file", "*.*")]) if file_path: print("File selezionato:", file_path)
- Salva file: La funzione
asksaveasfilename()
permette all'utente di scegliere un percorso e un nome per salvare il file.def save_file(): file_path = filedialog.asksaveasfilename( title="Salva file", defaultextension=".txt", filetypes=[("File di testo", "*.txt"), ("Tutti i file", "*.*")]) if file_path: print("File salvato come:", file_path)
- Seleziona cartella: La funzione
askdirectory()
permette di selezionare una cartella.def select_directory(): directory_path = filedialog.askdirectory(title="Seleziona cartella") if directory_path: print("Cartella selezionata:", directory_path)
3. Finestre popup personalizzate
Oltre alle finestre di dialogo standard, Tkinter fornisce il widget Toplevel
per creare finestre popup personalizzate. Queste finestre possono essere utilizzate per creare popup multifunzionali con campi di input, pulsanti e altri elementi dell'interfaccia utente.
Creare una finestra popup con Toplevel
import tkinter as tk
# Funzione per aprire una finestra popup
def open_popup():
popup = tk.Toplevel(root)
popup.title("Finestra popup")
popup.geometry("300x200")
label = tk.Label(popup, text="Inserisci il tuo nome:")
label.pack(pady=10)
entry = tk.Entry(popup)
entry.pack(pady=5)
# Pulsante per chiudere la finestra
close_button = tk.Button(popup, text="Chiudi", command=popup.destroy)
close_button.pack(pady=10)
# Finestra principale
root = tk.Tk()
root.title("Finestra principale")
root.geometry("400x300")
# Pulsante per aprire la finestra popup
open_button = tk.Button(root, text="Apri finestra popup", command=open_popup)
open_button.pack(pady=50)
root.mainloop()
Spiegazione del codice
tk.Toplevel(root)
crea una nuova finestra che viene mostrata sopra la finestra principaleroot
.- Elementi della finestra: Nella finestra popup puoi aggiungere etichette, campi di input e pulsanti.
- Pulsante "Chiudi": La funzione
popup.destroy
chiude la finestra popup.
4. Applicazione completa con dialoghi e finestre popup
Ora raccogliamo tutti gli elementi esaminati in un'unica applicazione che include finestre di dialogo standard, selezione di file e una finestra popup personalizzata.
import tkinter as tk
from tkinter import messagebox, filedialog
# Funzioni per finestre di dialogo standard
def show_info():
messagebox.showinfo("Informazione", "Questo è un messaggio informativo")
def show_warning():
messagebox.showwarning("Avvertimento", "Questo è un messaggio di avvertimento")
def show_error():
messagebox.showerror("Errore", "Si è verificato un errore!")
def confirm_exit():
response = messagebox.askyesno("Uscita", "Sei sicuro di voler uscire?")
if response:
root.quit()
def open_file():
file_path = filedialog.askopenfilename(title="Apri file", filetypes=[("File di testo", "*.txt"), ("Tutti i file", "*.*")])
if file_path:
messagebox.showinfo("File selezionato", file_path)
def save_file():
file_path = filedialog.asksaveasfilename(title="Salva file", defaultextension=".txt", filetypes=[("File di testo", "*.txt"), ("Tutti i file", "*.*")])
if file_path:
messagebox.showinfo("File salvato come", file_path)
def select_directory():
directory_path = filedialog.askdirectory(title="Seleziona cartella")
if directory_path:
messagebox.showinfo("Cartella selezionata", directory_path)
# Funzione per finestra popup personalizzata
def open_popup():
popup = tk.Toplevel(root)
popup.title("Finestra popup")
popup.geometry("300x200")
tk.Label(popup, text="Inserisci il tuo nome:").pack(pady=10)
name_entry = tk.Entry(popup)
name_entry.pack(pady=5)
tk.Button(popup, text="Chiudi", command=popup.destroy).pack(pady=10)
# Finestra principale
root = tk.Tk()
root.title("Applicazione con finestre di dialogo e popup")
root.geometry("400x400")
# Pulsanti per diverse finestre di dialogo e popup
tk.Button(root, text="Informazione", command=show_info).pack(pady=5)
tk.Button(root, text="Avvertimento", command=show_warning).pack(pady=5)
tk.Button(root, text="Errore", command=show_error).pack(pady=5)
tk.Button(root, text="Conferma uscita", command=confirm_exit).pack(pady=5)
tk.Button(root, text="Apri file", command=open_file).pack(pady=5)
tk.Button(root, text="Salva file", command=save_file).pack(pady=5)
tk.Button(root, text="Seleziona cartella", command=select_directory).pack(pady=5)
tk.Button(root, text="Apri finestra popup", command=open_popup).pack(pady=20)
root.mainloop()
GO TO FULL VERSION