Usuario y password con TkInter

# -*- coding: utf-8 -*-
from Tkinter import *
import tkMessageBox


def usercomp():
    cuser = user.get()
    longitud = len(cuser)
    notnum = cuser.isalnum()
    if notnum == False:
        tkMessageBox.showinfo("Error", "El nombre de usuario puede contener solo letras y números")
    elif longitud < 6:
        tkMessageBox.showinfo("Error", "El nombre de usuario debe contener al menos 6 caracteres")
    elif longitud > 12:
        tkMessageBox.showinfo("Error", "El nombre de usuario no puede contener más de 12 caracteres")
    elif longitud > 5 and longitud < 13 and notnum == True:
        return True


def clavecomp():
    cpasword = pasword.get()
    validar = False  # que se vayan cumpliendo los requisitos uno a uno.
    long = len(cpasword)  # Calcula la longitud de la contraseña
    espacio = False  # variable para identificar espacios
    mayuscula = False  # variable para identificar letras mayúsculas
    minuscula = False  # variable para contar identificar letras minúsculas
    numeros = False  # variable para identificar números
    y = cpasword.isalnum()  # si es alfanumérica retona True
    correcto = True  # verifica que hayan mayuscula, minuscula, numeros y no alfanuméricos

    for carac in cpasword:  # ciclo for que recorre caracter por caracter en la contraseña

        if carac.isspace() == True:  # Saber si el caracter es un espacio
            espacio = True  # si encuentra un espacio se cambia el valor user

        if carac.isupper() == True:  # saber si hay mayuscula
            mayuscula = True  # acumulador o contador de mayusculas

        if carac.islower() == True:  # saber si hay minúsculas
            minuscula = True  # acumulador o contador de minúsculas

        if carac.isdigit() == True:  # saber si hay números
            numeros = True  # acumulador o contador de numeros

    if espacio == True:  # hay espacios en blanco
        tkMessageBox.showinfo("Error en la contraseña", "La contraseña no puede contener espacios")
    else:
        validar = True  # se cumple el primer requisito que no hayan espacios

    if long < 8 and validar == True:
        tkMessageBox.showinfo("Error en la contraseña ", "Mínimo 8 caracteres")
        validar = False  # cambia a Flase si no se cumple el requisito móinimo de caracteres

    if mayuscula == True and minuscula == True and numeros == True and y == False and validar == True:
        validar = True  # Cumple el requisito de tener mayuscula, minuscula, numeros y no alfanuméricos
    else:
        correcto = False  # uno o mas requisitos de mayuscula, minuscula, numeros y no alfanuméricos no se cumple

    if validar == True and correcto == False:
        tkMessageBox.showinfo("Aviso",
                              "La contraseña elegida no es segura: debe contener letras minúsculas, mayúsculas, números y al menos 1 carácter no alfanumérico")

    if validar == True and correcto == True:
        return True


def validation():
    correcto = False
    if correcto == False:

        if usercomp() == True:

            correcto = True

            if correcto == True:
                if clavecomp() == True:
                    tkMessageBox.showinfo("Aviso", "Usuario y contraseña creados exitosamente")
                    correcto = False


raiz = Tk()
raiz.title("ventana primaria")
raiz.resizable(1, 1)  # para permitir agrandar o no el ancho o la altura con el moyuse
# raiz.geometry("500x600")
raiz.config(bg="cyan")
raiz.config(bd=15)
raiz.config(relief="groove")

miFrame = Frame(raiz)
miFrame.pack()
miFrame.config(bg="pink")
miFrame.config(bd=10)
miFrame.config(relief="sunken")
miFrame.config(cursor="hand2")

miLabel1 = Label(miFrame, text="Ingrese sus datos", fg="red", bg="pink", font=("Arial", 18)).grid(row=0, column=0,
                                                                                                  pady="4")
nombreusuarioLabel = Label(miFrame, text="Nombre usuario: ", bg="pink").grid(row=3, column=0, sticky="w", pady="1")
contrasenaLabel = Label(miFrame, text="Contraseña: ", bg="pink").grid(row=4, column=0, sticky="w", pady="1")

user = StringVar()
pasword = StringVar()

cuadronombreusuario = Entry(miFrame, textvariable=user)
cuadronombreusuario.grid(row=3, column=1, pady="1")
cuadronombreusuario.config(fg="blue", justify="center")

cuadrocontrasena = Entry(miFrame, textvariable=pasword)
cuadrocontrasena.grid(row=4, column=1, pady="1")
cuadrocontrasena.config(show="*", fg="blue", justify="center")

botonEnvio = Button(raiz, text="Enviar", command=validation)
botonEnvio.pack()

raiz.mainloop()

Entradas populares de este blog

1.4 Aspectos matematicos de la graficacion (geometria fractal)

1.2 Dispositivos de hardware y software para el despliegue gráfico.

Ejemplos de compañeros en clase