Cómo obtener la entrada del cuadro de texto de Tkinter

  1. Código de ejemplo para obtener la entrada del Widget de texto de Tkinter
  2. Código de ejemplo para obtener la entrada sin línea nueva al final del widget de texto de Tkinter

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í.

Tkinter obtiene la caja de texto Input_Inculde nueva línea

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()

Tkinter obtener cuadro de texto Input_Not Inculde nueva línea

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".

Artículo relacionado - Tkinter Text

  • Cómo borrar el contenido de la caja de texto de Tkinter
  • Cómo establecer la fuente del widget de texto de Tkinter