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

Jinku Hu 30 enero 2023
  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
Cómo obtener la entrada del cuadro 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".

Autor: 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

Artículo relacionado - Tkinter Text