HOWTO · Tkinter

Come ottenere l'input dalla casella di testo Tkinter

Questo articolo esplora come ottenere l'input da una casella di testo Tkinter usando il metodo get. Impara a specificare gli indici di inizio e fine per un recupero preciso del testo, a implementare la convalida e a migliorare le tue applicazioni Python con interfacce intuitive. Scopri esempi di codice pratici e spiegazioni dettagliate per acquisire in modo efficace l'input dell'utente nei tuoi progetti Tkinter.

In questa pagina

Per leggere un widget Text di Tkinter, chiama il suo metodo get con un indice di inizio e un indice di fine. Per il contenuto completo, usa text_box.get("1.0", "end-1c"): 1.0 segna l’inizio, e end-1c lascia fuori l’interruzione di riga finale del widget.

Recuperare testo con il widget Text di Tkinter

Questa finestra completa consente a un utente di inserire diverse righe e recuperarle con un pulsante. La callback mantiene la stringa restituita in user_input; sostituisci la chiamata a print con l’elaborazione di cui la tua applicazione ha bisogno.

import tkinter as tk

def get_input():
    user_input = text_box.get("1.0", "end-1c")
    print("User Input:", user_input)

root = tk.Tk()
root.title("Read Text Input")

text_box = tk.Text(root, height=8, width=40)
text_box.pack(padx=8, pady=8)

get_button = tk.Button(root, text="Get Input", command=get_input)
get_button.pack(pady=(0, 8))

root.mainloop()

Questo esempio di GUI non viene eseguito nelle prove di runtime fornite; la spiegazione segue la semantica degli indici di Tkinter.

Il primo indice è inclusivo e l’indice di fine segna dove si interrompe il recupero. get accetta anche un singolo indice; senza un indice di fine, restituisce il carattere in quella posizione invece dell’intero widget.

Scegliere gli indici di inizio e fine

Gli indici di testo di Tkinter usano una forma line.column. 1.0 significa il primo carattere della prima riga, mentre 2.0 significa l’inizio della seconda riga. Pertanto, text_box.get("1.0", "2.0") seleziona la prima riga, inclusa la sua interruzione di riga quando presente. Scegli una riga e una colonna successive per leggere un intervallo più piccolo. La posizione finale non è inclusa nel testo restituito.

Escludere l’interruzione di riga finale

Un widget Text conserva sempre un’interruzione di riga alla fine, anche quando l’utente non ha digitato testo. Leggere fino a "end" include quell’interruzione di riga finale. Usa "end-1c" come indice di fine per omettere solo quell’ultimo carattere; l’espressione Tkinter equivalente è tk.END + "-1c". Questa distinzione è importante quando confronti il valore recuperato, lo salvi o lo passi a codice che non dovrebbe ricevere un’interruzione di riga extra.

Input del widget Text di Tkinter recuperato con il metodo get

Testo parziale recuperato da un widget Text di Tkinter con il metodo get

Convalidare l’input recuperato

Quando l’applicazione richiede contenuto significativo, controlla una vista rifilata della stringa: if not user_input.strip():. Questo tratta l’input composto solo da spazi bianchi come vuoto. Mantieni user_input invariato se la spaziatura originale o le interruzioni di riga sono importanti; usa il valore rifilato solo per il controllo, a meno che la tua applicazione non voglia intenzionalmente normalizzare il testo dell’utente. Mostra un riscontro nell’interfaccia quando il controllo fallisce, e continua a elaborare il valore originale quando lo supera.