
El widget Entry() de Tkinter
Capítulo 6: Formularios con el widget Entry() y contraseñas protegidas
En este capítulo te enseñaré a crear un elemento de formulario, Entry()
que es parecido al input text de HTML.
Pero antes de empezar veamos la solución al ejercicio del capítulo anterior.
Para mostrar el texto a la derecha:
from tkinter import *
root = Tk()
def click_boton():
Label(root, text="¡No vuelvas a presionarlo!").grid(row=0, column=1)
boton1 = Button(root,
text="No presiones el botón rojo",
bg="red",
padx=100,
pady=25,
command=click_boton).grid(row=0, column=0)
root.mainloop()

Para mostrar el texto a la izquierda:
from tkinter import *
root = Tk()
def click_boton():
Label(root, text="¡No vuelvas a presionarlo!").grid(row=0, column=0)
boton1 = Button(root,
text="No presiones el botón rojo",
bg="red",
padx=100,
pady=25,
command=click_boton).grid(row=0, column=1)
root.mainloop()

¿Cómo crear una entrada de datos en Tkinter?
Ahora si, empecemos con el capítulo. Pasemos a ver como crear una entrada de datos.
Para crear una entrada de texto, tenemos el tipo de formulario y widget Entry()
que es como el <input type="text">
de HTML.
Mira cómo se crea:
from tkinter import *
root = Tk()
entrada = Entry(root)
entrada.grid(row=0, column=0)
def click_boton():
texto = Label(root, text="¡Se envío correctamente!").grid(row=0, column=0)
boton1 = Button(root,
text="Envíar",
bg="red",
padx=50,
pady=10,
command=click_boton).grid(row=1, column=0)
root.mainloop()

En este Entry()
podemos escribir lo que queramos y enviarlo a nuestro programa con solo apretar el botón.

En este caso, se reemplaza con el grid()
el widget. Esto ocurre al hacer click. En ese momento, se envía la información escrita y se sustituye por el mensaje que ocupa su misma posición en el grid()
.
Si quieres evitar esto y crear un nuevo espacio para el texto, seguro que ya sabes como hacerlo, tienes que indicar otras posiciones en el grid()
.
Veamos cómo hacer algo con el texto introducido, vamos a obtenerlo y a mostrarlo en el programa:
from tkinter import *
root = Tk()
entrada = Entry(root)
entrada.grid(row=0, column=0)
def click_boton():
texto = Label(root,
text=f'Se almacenó "{entrada.get()}" correctamente').grid(row=2, column=0)
boton1 = Button(root,
text="Envíar",
bg="red",
padx=50,
pady=10,
command=click_boton).grid(row=1, column=0)
root.mainloop()

Si le das al botón, el programa obtiene el texto y lo utiliza.

Al poder almacenar esto en una variable, se abre un mundo de posibilidades.
¿Cómo poner asteriscos en formularios de contraseñas de Tkinter?
Veamos una cosa más y terminemos con el capítulo.
Si ponemos el atributo show
, reemplaza las letras por lo que le pongamos, de ese modo, por ejemplo, podríamos hacer un Entry()
para contraseñas.
from tkinter import *
root = Tk()
entrada = Entry(root, width=25, show="*")
entrada.insert(0, "Escriba aquí...")
entrada.grid(row=0, column=0)
def click_boton():
texto = Label(root,
text=f'Se almacenó "{entrada.get()}" correctamente').grid(row=2, column=0)
boton1 = Button(root,
text="Envíar",
bg="red",
padx=75,
pady=10,
command=click_boton).grid(row=1, column=0)
root.mainloop()
Todo lo que escribas en este Entry()
va a estar protegido visualmente cambiando los caracteres por asteriscos.

Comentarios
Si te quedan dudas sobre el temario, sobre Tkinter, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.