HOWTO · Tkinter

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

Este artículo explora cómo obtener la entrada de un cuadro de texto de Tkinter usando el método get. Aprenda a especificar índices de inicio y fin para una recuperación precisa del texto, implementar validación y mejorar sus aplicaciones de Python con interfaces fáciles de usar. Descubra ejemplos de código prácticos y explicaciones detalladas para capturar de forma efectiva la entrada del usuario en sus proyectos de Tkinter.

En esta página

Para leer un widget Text de Tkinter, llama a su método get con un índice de inicio y un índice de fin. Para el contenido completo, usa text_box.get("1.0", "end-1c"): 1.0 marca el inicio, y end-1c omite el salto de línea final del widget.

Recuperar texto con el widget Text de Tkinter

Esta ventana completa permite a un usuario introducir varias líneas y recuperarlas con un botón. La función de devolución de llamada mantiene la cadena devuelta en user_input; reemplaza la llamada a print por el procesamiento que necesite tu aplicación.

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

Este ejemplo de GUI no se ejecuta en la evidencia de tiempo de ejecución suministrada; la explicación sigue la semántica de índices de Tkinter.

El primer índice es inclusivo y el índice de fin marca dónde se detiene la recuperación. get también acepta un solo índice; sin un índice de fin, devuelve el carácter en esa posición en lugar de todo el widget.

Elegir índices de inicio y fin

Los índices de texto de Tkinter usan una forma line.column. 1.0 significa el primer carácter de la primera línea, mientras que 2.0 significa el inicio de la segunda línea. Por tanto, text_box.get("1.0", "2.0") selecciona la primera línea, incluido su salto de línea cuando está presente. Elige una línea y columna posteriores para leer un rango menor. La posición final no se incluye en el texto devuelto.

Excluir el salto de línea final

Un widget Text siempre conserva un salto de línea al final, incluso cuando el usuario no ha escrito texto. Leer hasta "end" incluye ese salto de línea final. Usa "end-1c" como índice de fin para omitir solo ese último carácter; la expresión equivalente de Tkinter es tk.END + "-1c". Esta distinción importa al comparar el valor recuperado, guardarlo o pasarlo a código que no debería recibir un salto de línea extra.

Entrada del widget Text de Tkinter recuperada con el método get

Texto parcial recuperado de un widget Text de Tkinter con el método get

Validar la entrada recuperada

Cuando la aplicación requiere contenido significativo, comprueba una vista recortada de la cadena: if not user_input.strip():. Esto trata la entrada que solo contiene espacios en blanco como vacía. Mantén user_input sin cambios si el espaciado original o los saltos de línea importan; usa el valor recortado solo para la comprobación, a menos que tu aplicación quiera normalizar el texto del usuario de forma intencionada. Muestra comentarios en la interfaz cuando la comprobación falla, y sigue procesando el valor original cuando la supera.