Tkinter è un toolkit molto utile per sviluppare applicazioni GUI in Python. In questa guida, spiegheremo dettagliatamente come ottenere eventi del mouse e della tastiera utilizzando Tkinter. Copriremo tutto, dalle impostazioni di base, agli esempi pratici, fino agli esercizi, fornendo conoscenze utili per lo sviluppo reale delle applicazioni.
Impostazioni di base e modalità di installazione di Tkinter
Tkinter è integrato di default in Python, quindi non è necessario installarlo separatamente. Tuttavia, spiegheremo come verificare la versione e come installarlo nel caso in cui Tkinter non fosse presente.
Verifica della versione di Tkinter
Per verificare se Tkinter è installato, eseguire il seguente comando:
import tkinter as tk
print(tk.TkVersion)
Se il comando restituisce una versione, significa che Tkinter è correttamente installato.
Installazione di Python e Tkinter
Se Tkinter non è installato, seguire i passaggi indicati di seguito per l’installazione.
Installazione di Python
Scarica e installa l’ultima versione di Python dal sito ufficiale, assicurandoti di selezionare l’opzione “Aggiungi Python al PATH” durante l’installazione.
Installazione di Tkinter
Di solito, Python include Tkinter durante l’installazione, ma se non fosse presente, è possibile installarlo utilizzando il seguente comando:
sudo apt-get install python3-tk
Su Windows, potrebbe essere necessario reinstallare Python o aggiungere la directory di Python alla variabile di ambiente PATH per risolvere il problema.
Creazione di una semplice applicazione Tkinter
Esegui il seguente codice per verificare che la finestra Tkinter venga visualizzata correttamente.
import tkinter as tk
root = tk.Tk()
root.title("Impostazioni di base di Tkinter")
root.geometry("300x200")
label = tk.Label(root, text="Ciao, Tkinter!")
label.pack(pady=20)
root.mainloop()
Questo codice crea una finestra di base Tkinter e visualizza “Ciao, Tkinter!”. Con questo, l’impostazione di base di Tkinter e l’installazione sono complete.
Come ottenere eventi del mouse
Spiegheremo in dettaglio come ottenere eventi del mouse con Tkinter. Qui mostriamo come catturare eventi come click, movimento e trascinamento del mouse.
Ottenere eventi di click del mouse
Per ottenere eventi di click del mouse, dobbiamo associare un evento ai widget. Nel seguente esempio, catturiamo l’evento di click con il tasto sinistro del mouse e mostriamo un messaggio.
import tkinter as tk
def on_left_click(event):
print("Pulsante sinistro cliccato in posizione", event.x, event.y)
root = tk.Tk()
root.title("Evento di click del mouse")
frame = tk.Frame(root, width=300, height=200)
frame.bind("", on_left_click)
frame.pack()
root.mainloop()
Ottenere eventi di movimento del mouse
Per catturare gli eventi di movimento del mouse, possiamo usare l’evento di movimento. Nell’esempio seguente, visualizziamo la posizione attuale del mouse in tempo reale.
import tkinter as tk
def on_mouse_move(event):
label.config(text=f"Posizione del mouse: {event.x}, {event.y}")
root = tk.Tk()
root.title("Evento di movimento del mouse")
label = tk.Label(root, text="Muovi il mouse dentro il frame")
label.pack(pady=10)
frame = tk.Frame(root, width=300, height=200, bg="lightgrey")
frame.bind("", on_mouse_move)
frame.pack()
root.mainloop()
Ottenere eventi di trascinamento del mouse
Per catturare eventi di trascinamento del mouse, possiamo usare eventi come il tasto sinistro premuto. Nel seguente esempio, se si tiene premuto il tasto sinistro e si trascina il mouse, viene mostrata la posizione di trascinamento.
import tkinter as tk
def on_drag(event):
label.config(text=f"Trascinamento a {event.x}, {event.y}")
root = tk.Tk()
root.title("Evento di trascinamento del mouse")
label = tk.Label(root, text="Trascina il mouse dentro il frame")
label.pack(pady=10)
frame = tk.Frame(root, width=300, height=200, bg="lightgrey")
frame.bind("", on_drag)
frame.pack()
root.mainloop()
Sommario degli eventi del mouse
Combinando questi eventi, è possibile realizzare interazioni avanzate con il mouse in Tkinter. Configurando correttamente i gestori degli eventi e implementando le azioni per ciascun evento, è possibile migliorare l’usabilità dell’interfaccia utente.
Come ottenere eventi della tastiera
Spiegheremo in dettaglio come ottenere eventi della tastiera in Tkinter. Qui vedremo come catturare eventi di pressione e rilascio dei tasti.
Ottenere eventi di pressione dei tasti
Per ottenere eventi di pressione dei tasti, usiamo eventi come “
import tkinter as tk
def on_key_press(event):
label.config(text=f"Tasto premuto: {event.keysym}")
root = tk.Tk()
root.title("Evento di pressione del tasto")
label = tk.Label(root, text="Premi qualsiasi tasto")
label.pack(pady=20)
root.bind("", on_key_press)
root.mainloop()
Ottenere eventi di rilascio dei tasti
Per ottenere eventi di rilascio dei tasti, usiamo l’evento “
import tkinter as tk
def on_key_release(event):
label.config(text=f"Tasto rilasciato: {event.keysym}")
root = tk.Tk()
root.title("Evento di rilascio del tasto")
label = tk.Label(root, text="Premi e rilascia qualsiasi tasto")
label.pack(pady=20)
root.bind("", on_key_release)
root.mainloop()
Ottenere eventi di un tasto specifico
Per ottenere eventi di un tasto specifico, possiamo legare un simbolo del tasto durante la bassa di eventi. Nell’esempio seguente, visualizziamo un messaggio quando viene premuto il tasto spazio.
import tkinter as tk
def on_space_press(event):
label.config(text="Tasto spazio premuto")
root = tk.Tk()
root.title("Evento di tasto specifico")
label = tk.Label(root, text="Premi il tasto spazio")
label.pack(pady=20)
root.bind("", on_space_press)
root.mainloop()
Gestire eventi di più tasti contemporaneamente
Per gestire più eventi di tasti contemporaneamente, possiamo impostare più legami. Nel seguente esempio, gestiamo gli eventi dei tasti delle frecce sinistra e destra.
import tkinter as tk
def on_left_key(event):
label.config(text="Tasto freccia sinistra premuto")
def on_right_key(event):
label.config(text="Tasto freccia destra premuto")
root = tk.Tk()
root.title("Eventi di più tasti")
label = tk.Label(root, text="Premi la freccia sinistra o destra")
label.pack(pady=20)
root.bind("", on_left_key)
root.bind("", on_right_key)
root.mainloop()
Sommario degli eventi della tastiera
Utilizzando questi eventi della tastiera, è possibile creare applicazioni interattive che rispondono istantaneamente all’input dell’utente. Impostando correttamente i gestori degli eventi e implementando le azioni per ciascun evento, è possibile migliorare l’usabilità dell’interfaccia utente.
Come configurare i gestori degli eventi
Per gestire eventi di mouse o tastiera in Tkinter, è necessario configurare i gestori degli eventi. In questa sezione, esploreremo come impostare i gestori degli eventi e i relativi esempi pratici.
Cos’è un gestore degli eventi?
Un gestore degli eventi è una funzione che viene chiamata quando si verifica un determinato evento. Configurando i gestori degli eventi, è possibile aggiungere comportamenti al programma in base alle azioni dell’utente.
Basi del legame degli eventi
Per impostare un gestore degli eventi, è necessario legare un evento a un widget. Durante il legame, si specificano il nome dell’evento e la funzione del gestore.
import tkinter as tk
def on_event(event):
print("Evento attivato:", event)
root = tk.Tk()
root.title("Esempio di legame evento")
button = tk.Button(root, text="Cliccami")
button.bind("", on_event)
button.pack(pady=20)
root.mainloop()
In questo esempio, quando il pulsante viene cliccato con il tasto sinistro del mouse, viene chiamata la funzione on_event e vengono visualizzate le informazioni sull’evento.
Legare gestori per più eventi
È possibile legare più eventi allo stesso widget. Nell’esempio seguente, legano eventi di click e pressione dei tasti al pulsante.
import tkinter as tk
def on_click(event):
print("Pulsante cliccato")
def on_key(event):
print("Tasto premuto:", event.keysym)
root = tk.Tk()
root.title("Legame di più eventi")
button = tk.Button(root, text="Clicca o premi un tasto")
button.bind("", on_click)
button.bind("", on_key)
button.pack(pady=20)
button.focus_set() # Impostiamo il focus per ottenere eventi della tastiera
root.mainloop()
In questo esempio, quando il pulsante viene cliccato o viene premuto un tasto, viene chiamata la funzione appropriata.
Annullare un gestore dell’evento
Se necessario, è possibile annullare un gestore dell’evento legato. Nell’esempio seguente, annulliamo il legame dell’evento.
import tkinter as tk
def on_click(event):
print("Pulsante cliccato")
root = tk.Tk()
root.title("Esempio di annullamento evento")
button = tk.Button(root, text="Cliccami")
button.bind("", on_click)
button.pack(pady=20)
# Annulliamo il legame
button.unbind("")
root.mainloop()
Esempi avanzati di gestori di eventi
Utilizzare i gestori di eventi consente di implementare interazioni complesse. Qui sono riportati alcuni esempi avanzati.
Drag & Drop
Esempio di implementazione di un’operazione di drag & drop, che consente di spostare un elemento.
import tkinter as tk
def start_drag(event):
widget = event.widget
widget._drag_data = {"x": event.x, "y": event.y}
def do_drag(event):
widget = event.widget
x = widget.winfo_x() + event.x - widget._drag_data["x"]
y = widget.winfo_y() + event.y - widget._drag_data["y"]
widget.place(x=x, y=y)
root = tk.Tk()
root.title("Esempio Drag & Drop")
label = tk.Label(root, text="Trascinami", bg="lightblue", width=10, height=2)
label.place(x=50, y=50)
label.bind("", start_drag)
label.bind("", do_drag)
root.mainloop()
Creazione di eventi personalizzati
Esempio di creazione di eventi personalizzati e gestione degli stessi. È possibile creare eventi definiti dall’utente e attivarli.
import tkinter as tk
def custom_event_handler(event):
print("Evento personalizzato attivato")
root = tk.Tk()
root.title("Esempio evento personalizzato")
root.bind("<>", custom_event_handler)
# Attiviamo l'evento personalizzato
root.event_generate("<>")
root.mainloop()
Sommario dei gestori degli eventi
Usando i gestori degli eventi in modo efficace, è possibile migliorare notevolmente l’interattività delle applicazioni Tkinter. Configurando correttamente i legami degli eventi, gestendo eventi multipli e annullando legami non necessari, è possibile migliorare l’esperienza utente dell’applicazione.
Esempi avanzati di eventi del mouse
Utilizzare eventi del mouse per migliorare l’interattività dell’interfaccia utente. Qui mostriamo alcuni esempi pratici.
Implementazione della funzionalità di Drag & Drop
Con eventi del mouse, implementiamo una funzionalità che consente di spostare un widget tramite il drag & drop.
import tkinter as tk
def start_drag(event):
widget = event.widget
widget._drag_data = {"x": event.x, "y": event.y}
def do_drag(event):
widget = event.widget
x = widget.winfo_x() + event.x - widget._drag_data["x"]
y = widget.winfo_y() + event.y - widget._drag_data["y"]
widget.place(x=x, y=y)
root = tk.Tk()
root.title("Esempio Drag & Drop")
label = tk.Label(root, text="Trascinami", bg="lightblue", width=10, height=2)
label.place(x=50, y=50)
label.bind("", start_drag)
label.bind("", do_drag)
root.mainloop()
Implementazione di un menu con click destro
Impostiamo un gestore degli eventi per visualizzare un menu a comparsa con il click destro. Il seguente esempio mostra un menu che appare con il tasto destro del mouse.
import tkinter as tk
from tkinter import Menu
def show_context_menu(event):
context_menu.post(event.x_root, event.y_root)
root = tk.Tk()
root.title("Esempio di menu con click destro")
context_menu = Menu(root, tearoff=0)
context_menu.add_command(label="Opzione 1")
context_menu.add_command(label="Opzione 2")
context_menu.add_command(label="Opzione 3")
frame = tk.Frame(root, width=300, height=200, bg="lightgrey")
frame.bind("", show_context_menu)
frame.pack()
root.mainloop()
Implementazione di una applicazione di disegno
Usiamo eventi del mouse per creare una semplice applicazione di disegno. Il seguente esempio mostra come disegnare una linea trascinando il mouse.
import tkinter as tk
def start_draw(event):
global last_x, last_y
last_x, last_y = event.x, event.y
def draw(event):
global last_x, last_y
canvas.create_line((last_x, last_y, event.x, event.y), width=2)
last_x, last_y = event.x, event.y
root = tk.Tk()
root.title("Applicazione di Disegno")
last_x, last_y = None, None
canvas = tk.Canvas(root, bg="white", width=400, height=300)
canvas.pack()
canvas.bind("", start_draw)
canvas.bind("", draw)
root.mainloop()
Implementazione della funzionalità di zoom
Usiamo l’evento della rotella del mouse per implementare la funzionalità di zoom. Il seguente esempio mostra come cambiare la scala del canvas.
import tkinter as tk
def zoom(event):
scale = 1.0
if event.delta > 0:
scale *= 1.1
else:
scale /= 1.1
canvas.scale("all", event.x, event.y, scale, scale)
root = tk.Tk()
root.title("Esempio di Zoom")
canvas = tk.Canvas(root, bg="white", width=400, height=300)
canvas.pack(fill=tk.BOTH, expand=True)
canvas.bind("", zoom)
# Disegnamo forme iniziali
canvas.create_rectangle(50, 50, 150, 150, fill="blue")
canvas.create_oval(200, 50, 300, 150, fill="red")
root.mainloop()
Sommario degli esempi avanzati di eventi del mouse
Utilizzando eventi del mouse, è possibile sviluppare applicazioni GUI interattive come il drag & drop, la visualizzazione di menu contestuali, la creazione di applicazioni di disegno, la funzionalità di zoom e molto altro. Queste tecniche possono aiutare a migliorare l’esperienza dell’utente e a creare interfacce intuitive e reattive.
Esempi avanzati di eventi della tastiera
Gli eventi della tastiera possono essere utilizzati per migliorare l’interazione con l’interfaccia utente. Di seguito sono riportati alcuni esempi pratici.
Implementazione di tasti di scelta rapida
Impostando tasti di scelta rapida per determinate azioni, gli utenti possono accedere rapidamente a funzionalità tramite la tastiera. Nell’esempio seguente, visualizziamo un messaggio quando viene premuto Ctrl+S.
import tkinter as tk
def save(event):
label.config(text="Scorciatoia attivata (Ctrl+S)")
root = tk.Tk()
root.title("Esempio di Scorciatoia")
label = tk.Label(root, text="Premi Ctrl+S per attivare la scorciatoia")
label.pack(pady=20)
root.bind("", save)
root.mainloop()
Personalizzazione del campo di inserimento testo
Associa eventi specifici a un campo di inserimento testo per implementare comportamenti personalizzati. Nel seguente esempio, quando si preme il tasto Enter, il contenuto del campo di testo viene mostrato in un’etichetta.
import tkinter as tk
def on_enter(event):
label.config(text=f"Testo inserito: {entry.get()}")
root = tk.Tk()
root.title("Esempio di Inserimento Testo")
entry = tk.Entry(root)
entry.pack(pady=10)
entry.bind("", on_enter)
label = tk.Label(root, text="Premi Enter dopo aver digitato")
label.pack(pady=10)
root.mainloop()
Implementazione di un controller di gioco
Usando eventi della tastiera, possiamo implementare un semplice controller di gioco. Nell’esempio seguente, spostiamo un rettangolo utilizzando i tasti freccia.
import tkinter as tk
def move_left(event):
canvas.move(rect, -10, 0)
def move_right(event):
canvas.move(rect, 10, 0)
def move_up(event):
canvas.move(rect, 0, -10)
def move_down(event):
canvas.move(rect, 0, 10)
root = tk.Tk()
root.title("Esempio di Controller di Gioco")
canvas = tk.Canvas(root, width=400, height=400, bg="white")
canvas.pack()
rect = canvas.create_rectangle(180, 180, 220, 220, fill="blue")
root.bind("", move_left)
root.bind("", move_right)
root.bind("", move_up)
root.bind("", move_down)
root.mainloop()
Operazioni sui moduli
Personalizziamo l’uso del tasto Tab per navigare tra i campi di inserimento in un modulo. Nell’esempio seguente, Shift+Tab permette di tornare al campo precedente.
import tkinter as tk
def focus_next_widget(event):
event.widget.tk_focusNext().focus()
return "break"
def focus_prev_widget(event):
event.widget.tk_focusPrev().focus()
return "break"
root = tk.Tk()
root.title("Esempio di Navigazione nel Modulo")
entry1 = tk.Entry(root)
entry2 = tk.Entry(root)
entry3 = tk.Entry(root)
entry1.pack(pady=5)
entry2.pack(pady=5)
entry3.pack(pady=5)
entry1.bind("", focus_next_widget)
entry2.bind("", focus_next_widget)
entry3.bind("", focus_next_widget)
entry1.bind("", focus_prev_widget)
entry2.bind("", focus_prev_widget)
entry3.bind("", focus_prev_widget)
root.mainloop()
Sommario degli esempi avanzati di eventi della tastiera
Gli eventi della tastiera possono essere utilizzati per implementare scorciatoie da tastiera, personalizzare i campi di inserimento testo, creare controller di gioco, operazioni sui moduli e molto altro. Questi esempi mostrano come migliorare l’esperienza utente rendendo l’interfaccia più interattiva e intuitiva.
Sommario degli esercizi e soluzioni
In questa sezione, offriamo alcuni esercizi per mettere alla prova le tue conoscenze su come gestire eventi del mouse e della tastiera in Tkinter, insieme alle soluzioni per aiutarti a comprendere i concetti più approfonditamente.
Esercizio 1: Cambiare il colore con il click del mouse
Problema: Crea un programma che cambia il colore di sfondo di un’etichetta in modo casuale quando un pulsante viene cliccato.
Suggerimento: Usa il modulo random
per generare colori casuali.
Soluzione:
import tkinter as tk
import random
def change_color(event):
colors = ["red", "green", "blue", "yellow", "purple", "orange"]
color = random.choice(colors)
label.config(bg=color)
root = tk.Tk()
root.title("Cambio colore al click")
label = tk.Label(root, text="Clicca il pulsante per cambiare il mio colore", width=40, height=10)
label.pack(pady=20)
button = tk.Button(root, text="Cambia colore")
button.bind("", change_color)
button.pack()
root.mainloop()
Esercizio 2: Contare i caratteri con l’input da tastiera
Problema: Crea un programma che conti i caratteri inseriti in un campo di testo in tempo reale.
Suggerimento: Usa l’evento <KeyRelease>
.
Soluzione:
import tkinter as tk
def update_count(event):
count = len(entry.get())
label.config(text=f"Contatore caratteri: {count}")
root = tk.Tk()
root.title("Contatore Caratteri")
entry = tk.Entry(root)
entry.pack(pady=10)
entry.bind("", update_count)
label = tk.Label(root, text="Contatore caratteri: 0")
label.pack(pady=10)
root.mainloop()
Esercizio 3: Disegnare cerchi con il drag del mouse
Problema: Crea un programma che disegna cerchi sulla tela durante il drag del mouse.
Suggerimento: Usa il metodo create_oval
.
Soluzione:
import tkinter as tk
def draw_circle(event):
x, y = event.x, event.y
r = 10 # raggio
canvas.create_oval(x-r, y-r, x+r, y+r, fill="blue")
root = tk.Tk()
root.title("Disegna Cerchi")
canvas = tk.Canvas(root, bg="white", width=400, height=300)
canvas.pack()
canvas.bind("", draw_circle)
root.mainloop()
Esercizio 4: Aggiornare l’etichetta con i tasti di scelta rapida
Problema: Quando si preme Ctrl+U, aggiorna il testo dell’etichetta a “Scorciatoia Attivata!”.
Suggerimento: Usa l’evento <Control-u>
.
Soluzione:
import tkinter as tk
def update_label(event):
label.config(text="Scorciatoia Attivata!")
root = tk.Tk()
root.title("Aggiorna Etichetta con Scorciatoia")
label = tk.Label(root, text="Premi Ctrl+U per aggiornare questo testo")
label.pack(pady=20)
root.bind("", update_label)
root.mainloop()
Sommario degli esercizi
Questi esercizi ti aiutano a rivedere come ottenere eventi del mouse e della tastiera in Tkinter, nonché come applicare queste conoscenze nella creazione di applicazioni interattive. Usa le soluzioni come riferimento per implementare le tue versioni personalizzate delle applicazioni.
Domande frequenti e risoluzione dei problemi
In questa sezione rispondiamo alle domande frequenti su Tkinter e forniamo soluzioni ai problemi comuni che potrebbero verificarsi durante lo sviluppo delle tue applicazioni.
Domanda 1: La finestra Tkinter non si visualizza
Problema: La finestra Tkinter non appare quando eseguo il codice.
Soluzione: La causa più comune è che non viene chiamato il metodo root.mainloop()
. Questo metodo avvia il ciclo di eventi di Tkinter e mantiene la finestra visualizzata. Assicurati di chiamarlo come nel seguente esempio:
import tkinter as tk
root = tk.Tk()
root.title("Finestra di esempio")
root.geometry("300x200")
root.mainloop() # Necessario per avviare il ciclo di eventi
Domanda 2: Gli eventi della tastiera non rispondono
Problema: Gli eventi della tastiera non rispondono anche se sono stati configurati.
Soluzione: Assicurati che il widget abbia il focus. Per ottenere eventi dalla tastiera, il widget deve essere in focus. Usa il metodo focus_set
per impostare il focus come nel seguente esempio:
import tkinter as tk
def on_key_press(event):
print("Tasto premuto:", event.keysym)
root = tk.Tk()
root.title("Esempio di Evento da Tastiera")
entry = tk.Entry(root)
entry.pack()
entry.bind("", on_key_press)
entry.focus_set() # Imposta il focus
root.mainloop()
Domanda 3: Gli eventi del mouse non funzionano correttamente
Problema: Gli eventi del mouse non funzionano anche se sono stati legati.
Soluzione: Verifica che gli eventi siano legati al widget giusto. Assicurati che gli eventi siano legati dopo che il widget è stato posizionato nella finestra.
import tkinter as tk
def on_click(event):
print("Mouse cliccato in posizione", event.x, event.y)
root = tk.Tk()
root.title("Esempio Evento del Mouse")
frame = tk.Frame(root, width=300, height=200, bg="lightgrey")
frame.pack()
frame.bind("", on_click) # Lega l'evento dopo che il widget è stato posizionato
root.mainloop()
Domanda 4: Le forme sul canvas non sono disegnate correttamente
Problema: Le forme disegnate nel canvas non sono visibili come previsto.
Soluzione: Verifica che le coordinate e le dimensioni delle forme siano corrette e che rientrino nel canvas.
import tkinter as tk
root = tk.Tk()
root.title("Esempio Disegno Canvas")
canvas = tk.Canvas(root, bg="white", width=400, height=300)
canvas.pack()
# Verifica che le forme siano visibili all'interno del canvas
canvas.create_rectangle(50, 50, 150, 150, fill="blue")
canvas.create_oval(200, 50, 300, 150, fill="red")
root.mainloop()
Domanda 5: L’applicazione Tkinter si blocca
Problema: L’applicazione Tkinter si blocca in modo intermittente.
Soluzione: Il problema potrebbe essere dovuto a operazioni lunghe o elaborate, o a problemi di gestione dei thread. Assicurati di gestire correttamente le eccezioni e le risorse, e ricorda che Tkinter non è thread-safe, quindi tutte le operazioni GUI devono essere eseguite nel thread principale.
import tkinter as tk
def update_label():
try:
label.config(text="Testo aggiornato")
except Exception as e:
print("Errore:", e)
root = tk.Tk()
root.title("Esempio di Gestione delle Eccezioni")
label = tk.Label(root, text="Testo iniziale")
label.pack()
button = tk.Button(root, text="Aggiorna Etichetta", command=update_label)
button.pack()
root.mainloop()
Conclusioni
In questo articolo, abbiamo trattato in dettaglio come ottenere eventi del mouse e della tastiera con Tkinter. Partendo dalle impostazioni di base, abbiamo esplorato la configurazione dei gestori degli eventi, esempi avanzati, esercizi e la risoluzione dei problemi.
La gestione degli eventi in Tkinter è un elemento fondamentale per rendere le interfacce utente interattive e migliorare l’esperienza dell’utente. Utilizzando eventi del mouse e della tastiera, puoi creare applicazioni reattive e intuitive.
Pratica questi concetti e applicali nei tuoi progetti per migliorare le tue competenze nello sviluppo con Tkinter. Spero che questo articolo ti sia stato utile per i tuoi futuri progetti.
Come prossimo passo, puoi esplorare altre funzionalità avanzate di Tkinter o l’integrazione con altre librerie Python per sviluppare applicazioni più complesse e complete.