Formularios con el widget Entry() y contraseñas protegidas - Tkinter desde cero - Capítulo 6


En este capítulo te enseñaré a crear un elemento de formulario, Entry() que es como el 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:

Código

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

Resultado

Botón llamando a función en Tkinter

Para mostrar el texto a la izquierda:

Código

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

Resultado

Botón llamando a función 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 text de HTML.
Mira cómo se crea:

Código

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

Resultado

Botón llamando a función en Tkinter

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

Botón con Entry() en Tkinter

En este caso, se reemplaza con el grid() el widget, puesto que al hacer click 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:

Código

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

Resultado

Botón llamando a función en Tkinter

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

Texto obtenido de un Entry() mediante get()

Al poder almacenar esto en una variable, se abre un mundo de posibilidades.

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.

Código

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

Resultado

Todo lo que escribas en este Entry() va a estar protegido visualmente cambiando los caracteres por asteríscos.

Texto contraseñas en Entry() de Tkinter


Suscríbete a mi canal de YouTube para apoyarme

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.


Comentarios

Si te quedan dudas sobre el temario, sobre Python, 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.