Ejercicios de Python y Tkinter – Creación de un login – Curso de 100 días de Python #14
Estos son los ejercicios de Python y Tkinter correspondientes al día 14 del reto Python de 100 días. Si quieres, puedes ver como los resuelvo en el vídeo correspondiente. También tienes las soluciones en versión escrita aquí. Vamos a ir creando un login simulado.
- Copia y pega estas líneas en un archivo .py ¿Sabrías decirme que ruta está almacenando esta variable?
import os ruta = os.path.dirname(__file__)
- A partir del siguiente código, añade un icono a la ventana.
#Importaciones from tkinter import * #Creación de la ventana principal root = Tk() #Título de la ventana root.title("www.programacionfacil.org") #Icono de la ventana #Bucle de ejecución root.mainloop()
- Añade cuatro imágenes a tu carpeta de imágenes. Déjalas en resolución grande. Carga en grid las cuatro imágenes. Debes redimensionarlas desde el código a 400px (ancho), el alto te lo dejo libre para que las imágenes de diferentes resoluciones no te queden deformadas. Intenta que el resultado final, sea como este. Las cuatro imágenes perfectamente alineadas entre sí.
Recuerda que deberás importar esto:
from PIL import ImageTk, Image
Requisito opcional: almacena los nombres de las 4 imágenes en una lista y utilízala para las rutas.
- Proyecto – Ventana de login simulado para la tienda de motocicletas.
Por cierto, el tema del proyecto no hace falta que sean las motocicletas, puedes hacer este proyecto sobre lo que quieras.
Si sigues el curso con todos sus capítulos, recordarás del día 11 la tienda de motocicletas. Para este proyecto, nos han pedido crear un programa de gestión para la tienda. Puesto que aún falta mucho para llegar a este punto en el curso, empecemos creando en este proyecto una ventana de login (inicio de sesión) simulada. Aún no va a funcionar, ni es un proyecto final, pero empezaremos con el diseño gráfico y con una pequeña lógica simulada. Busca alguna imagen que esté relacionada con la tienda de motocicletas (o con cualquier otro tema que hayas elegido). El proyecto tiene los siguientes requisitos:
- Icono personalizado.
- Título de ventana con el nombre de la tienda (inventa el que quieras).
- Una imagen con el logo de la tienda (deberá estar con un tamaño de máximo 300px de ancho. El alto es libre para que lo ajustes y se vea la imagen sin deformar).
- Dos etiquetas que pongan, «Usuario» y «Contraseña».
- Dos entradas de texto correspondientes a estas etiquetas.
- Las entradas de texto deben tener en su interior estos mensajes por defecto: «Ej:Laura» en el de usuario y la contraseña llevará «*******» 7 asteriscos.
- Un botón para enviar.
Debería quedarte algo así. La colocación de los elementos la dejo a tu gusto. Utiliza pack() o grid().
Requisitos opcionales:
- Pon los asteriscos de la contraseña con el método de multiplicación de strings.
- Los mensajes, por defecto de las entradas de texto, serán eliminados una vez se pulse el click izquierdo para empezar a escribir.
- Crea una tupla vacía llamada «usuario_creado». Esta tupla servirá para almacenar el usuario y la contraseña.
- Crea dos entradas por la consola que pida el usuario y la contraseña. Ambas cosas se deben pedir dos veces, con el fin de comprobar que no se haya equivocado.
- Si los datos coinciden, se almacenarán en dos posiciones de la tupla «usuario_creado». Si no, se le vuelven a solicitar los input().
- Crea un sistema sencillo que sea capaz de detectar si el usuario y la contraseña coinciden. Este sistema irá con los Entry, si pone mal el usuario o la contraseña, al pulsar el botón, le deberá informar del fallo con una etiqueta y lo puede volver a intentar. En cambio, si es correcto, le avisamos de ello.
Parte de investigación
Mediante el código resultante de todo el proyecto, realiza el último ejercicio.
Si no lo has hecho la parte opcional, puedes utilizar mi código.
- Investiga por internet sobre el módulo getpass. Quiero que pongas invisible la escritura de los dos input() que piden la contraseña, de forma que al escribir en la consola, no aparezca nada (como ocurre con las contraseñas en Linux) y esta se almacene correctamente.
Excelente toda tu enseñanza, abrazo!!!!!