Ottieni l'input dalla casella di testo Tkinter

Jinku Hu 26 aprile 2021
  1. Codice di esempio per ottenere l’input dal widget di testo Tkinter
  2. Codice di esempio per recuperare l’input senza newline alla fine dal widget di testo Tkinter
Ottieni l'input dalla casella di testo Tkinter

Il widget Tkinter Text ha il metodo get() per restituire l’input dalla casella di testo, che ha l’argomento della posizione start e un argomento end opzionale per specificare la posizione finale del testo da caricare.

get(start, end=None)

Se end non viene fornito, verrà restituito solo un carattere specificato nella posizione start.

Codice di esempio per ottenere l’input dal widget di testo Tkinter

import tkinter as tk

root = tk.Tk()
root.geometry("400x240")


def getTextInput():
    result = textExample.get("1.0", "end")
    print(result)


textExample = tk.Text(root, height=10)
textExample.pack()
btnRead = tk.Button(root, height=1, width=10, text="Read", command=getTextInput)

btnRead.pack()

root.mainloop()
result = textExample.get("1.0", "end")

La posizione del primo carattere nel widget Text è 1.0 e potrebbe essere indicato come un numero 1.0 o una stringa 1.0.

"end" significa che legge l’input fino alla fine della casella Text. Potremmo anche usare tk.END invece della stringa "end" qui.

Tkinter ottiene la nuova riga della casella di testo Input_Inculde

Il piccolo problema se specifichiamo "end" come posizione finale del testo da restituire, include anche il carattere di nuova riga \n alla fine della stringa di testo, come puoi vedere dall’animazione sopra.

Potremmo cambiare l’argomento "end" del metodo get in "end-1c" se non vogliamo la nuova riga nell’input restituito.

"end-1c" significa che la posizione è un carattere prima di "end".

Codice di esempio per recuperare l’input senza newline alla fine dal widget di testo Tkinter

import tkinter as tk

root = tk.Tk()
root.geometry("400x240")


def getTextInput():
    result = textExample.get(1.0, tk.END + "-1c")
    print(result)


textExample = tk.Text(root, height=10)
textExample.pack()
btnRead = tk.Button(root, height=1, width=10, text="Read", command=getTextInput)

btnRead.pack()

root.mainloop()

Tkinter ottiene la casella di testo Input_Not Inculde nuova riga

Qui, potremmo anche usare tk.END+"-1c" oltre a "end-1c" per eliminare l’ultimo carattere - \n, perché tk.END = "end", quindi tk.END+"-1c" è uguale a "end"+"-1c"="end-1c".

Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Articolo correlato - Tkinter Text