HOWTO · Tkinter
Cómo obtener la entrada del cuadro de texto de Tkinter
El método get del widget de cuadro de texto de Tkinter obtiene la entrada del mismo, y el argumento start and end especifica las posiciones de inicio y final del texto a leer.
En esta página
El widget de Tkinter Text tiene el método get() para devolver la entrada de la caja de texto, que tiene el argumento de posición start, y un argumento opcional end para especificar la posición final del texto a ser obtenido.
get(start, end=None)
Si no se da end, sólo se devolverá un carácter especificado en la posición start.
Código de ejemplo para obtener la entrada del Widget de texto de 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 posición del primer carácter en el widget Text es 1.0, y podría ser referido como un número 1.0 o una cadena 1.0.
"end" significa que lee la entrada hasta el final de la caja de Text. También podríamos usar tk.END en lugar de la cadena "end" aquí.
El pequeño problema es que si especificamos "end" como la posición final del texto a devolver, incluye también el nuevo carácter \n al final de la cadena de texto, como se puede ver en la animación anterior.
Podríamos cambiar el argumento "end" del método get por el "end-1c" si no queremos la nueva línea en la entrada devuelta.
"end-1c" significa que la posición está un carácter por delante de "end".
Código de ejemplo para obtener la entrada sin línea nueva al final del widget de texto de 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()
Aquí, también podríamos usar tk.END+"-1c" además de "end-1c" para eliminar el último carácter - \n, porque tk.END = "end", por lo tanto tk.END+"-1c" es igual a "end"+"-1c"="end-1c".