Programa en Python que solicite Nombre de Usuario y Contraseña

Con este programa validaremos un nombre de usuario y la contraseña, en base a otro codigo para que este programa sea aun más complejo http://pythoninicios.blogspot.mx/2015/09/validar-usuario-y-contrasena-en-python.html

El Codigo a Continuación es para nuestra Ventana :

from tkinter import *
from tkinter.messagebox import *
from LogInAvanzado.UserF import * #En Python 3.X, para poder llamar una "clase" es necesario usar 'from' Y escribir el nombre de nuestro Paquete/Directorio y con punto '.' llamamas nuestro archivofrom LogInAvanzado.PassF import clave #Tambien podemos definir que queremos importar de ese archivo, en este caso la funcion "clave"
def checkUser(): #Esta Funcion se encarga de verificar que la Entrada del Usuario sea valida de acuerdo a los parametros requeridos (más de 8 caracteres, menos de 12, Alfanumerico)    if nickname(CatchUser.get()) == True:
        showinfo("Exito!","Nombre de Usuario Valido!")
        confirm_user.config(fg="Green")
        TUser.config(fg="Green")
        TPassword.grid() #Teniendo ya definido el Grid de nuestra etiqueta, poner solo .grid() lo hara visible de nuevo, esto es valido para la mayoria de los objetos que se hayan puesto en el grid()        CatchPsswd.grid()
        confirm_pssw.grid()
        ready_req.grid()
        CatchUser.config(state="disabled") #Con la funcion .config y el parametro 'State' en "Disabled" nosotros deshabilitamos este elemento grafico, asi impedimos que el Usuario pueda alterar el valor ingresado y capturado    else:
        confirm_user.config(fg="Red")
        TUser.config(fg="Red")
def checkPssw():
    if clave(CatchPsswd.get())==True:
        showinfo("Exito!","Contraseña Valida!")
        confirm_pssw.config(fg="Green")
        TPassword.config(fg="Green")
    else:
        confirm_pssw.config(fg="Red")
        TPassword.config(fg="Red")
def CompleteRequest():
    if nickname(CatchUser.get()) == True and clave(CatchPsswd.get()) == True:
        TUser.config(fg="Green")
        TPassword.config(fg="Green")
        CatchUser.config(bg="Green", fg="White")
        CatchPsswd.config(bg="Green", fg="White")
        showinfo("Felicidades!","Usuario y Contraseña creados exitosamente!")

    else:
        TUser.config(fg="Red")
        TPassword.config(fg="Red")

def reiniciar(): #Esta función se encarga de limpiar la interfaz, es decir volver la interfaz al principio    TUser.config(fg="black")
    TPassword.config(fg="black")
    CatchUser.config(bg="white", fg="black")
    CatchUser.delete(0, END) #la Función .delete() se encarga de "Borrar" el contenido de los elementos, en este caso, nuestro Entry quedara vacio pero conserva sus caracteristicas    CatchPsswd.config(bg="white", fg="black")
    CatchPsswd.delete(0,END)
    confirm_user.config(fg="black")
    confirm_pssw.config(fg="black")
    TPassword.grid_remove()
    CatchPsswd.grid_remove()
    confirm_pssw.grid_remove()
    ready_req.grid_remove()
    CatchUser.config(state="normal")


app = Tk()
app.title("Control de Acceso")
app.geometry("600x400")
app.config(bg="Crimson")

vp = Frame(app)
vp.grid(column=0, row=0, padx=(50,50), pady=(10,10))
vp.rowconfigure(0, weight=1)
vp.columnconfigure(0, weight=1)
vp.config(bg="#F0F0F0")

TUser = Label(vp, text="Usuario: ")
TUser.grid(column=1, row=1, sticky=E, padx=(10,10),pady=(10,10))

TPassword = Label(vp, text="Contraseña: ")
TPassword.grid(column=1, row=2, sticky=E, padx=(10,10), pady=(10,10))
TPassword.grid_remove() #La Función .grid_remove() "remueve" el elemento Grafico, pero conserva sus datos tales como Columna, Renglon, etc. Esto es Valido para la mayoria de los elementos de Tkinter
field1 = ""CatchUser = Entry(vp, width=20, textvariable=field1)
CatchUser.grid(column=2, row=1, padx=(10,10))

field2 = ""CatchPsswd = Entry(vp, width=20, show='•', textvariable=field2)
CatchPsswd.grid(column=2, row=2, padx=(10,10))
CatchPsswd.grid_remove()

confirm_user = Button(vp, text="Verificar Usuario", command=checkUser)
confirm_user.grid(column=3, row=1, padx=(10,10), pady=(10,10))

confirm_pssw = Button(vp, text="Comprobar Contraseña", command=checkPssw)
confirm_pssw.grid(column=3, row=2, padx=(10,10), pady=(10,10))
confirm_pssw.grid_remove()

ready_req = Button(vp, text="Listo", command=CompleteRequest)
ready_req.grid(column=1, row=3, padx=(10,10), pady=(10,10))
ready_req.grid_remove()


resetGUI = Button(vp, text="Limpiar Registro", command=reiniciar)
resetGUI.grid(column=2,row=3, padx=(10,10), pady=(10,10), sticky=E)

app.mainloop()
 
 
El Codigo acontinuación es exactamente similar a como se encuentra en el blog anterior, la diferencia es
el uso de "MessageBox" de Tkinter para mostrar un Error (es la unica diferencia) 
  
from tkinter.messagebox import *
def nickname(nombre_usuario):
    long = len(nombre_usuario)  # Cuenta la cantidad de caracteres en la cadena de Texto    y = nombre_usuario.isalnum()  # analiza que la cadena de Texto no contenga Caracteres que no sean Alfanumericos (0-9 ; a-z ; A-Z)
    if y == False:  # con isalnum() verifica que sea un valor Falso, si es verdadero, el codigo prosigue        showerror("Error Caracteres no Validos","El nombre de usuario puede contener solo letras y números")

    if long < 6: #verifica que la cadena de caracteres no posea menos de 6 Caracteres        showerror("Error Tamaño","El nombre de usuario debe contener al menos 6 caracteres")

    if long > 12: #Verifica que la cadena de caracteres no posea más de 12 Caracteres        showerror("Error Tamaño excedido","El nombre de usuario no puede contener más de 12 caracteres")

    if long > 5 and long < 13 and y == True: #Si todas las secuencias se cumplen, retorna un valor verdadero a la función        return True  # Verdadero si el tamaño es apropiado  

 
El Codigo acontinuación es exactamente similar a como se encuentra en el Blog Mencionado, los cambios son los mismos que en el codigo anterior
 
from tkinter.messagebox import *
def clave(password):
    validar = False  # variable para verificar que las comparaciónes se cumplan como VERDADERAS    long = len(password)  # Cuenta los Caracteres en la cadena de Texto "Contraseña"    espacio = False  # Variable utilizada para analizar si contiene espaciós o no con ayuda de una comparación    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 = password.isalnum()  # si es alfanumérica retona True    correcto = True  # verifica que hayan mayuscula, minuscula, numeros y no alfanuméricos
    for carac in password:  # ciclo for que recorre caracter por caracter en la contraseña
        if carac.isspace() == True:  #  .isspace() es una Funcion que busca si uno de los caracteres es un Espacio            espacio = True  # si encuentra un espacio se cambia el valor a True, ya que inicialmente es Falso
        if carac.isupper() == True:  # .isupper() es una Funcion que busca en la cadena de caracteres si al menos un Caracter esta es Mayusculas            mayuscula = True  # si se encuentra una Mayuscula se cambia el valor a True, ya que inicialmente es Falso
        if carac.islower() == True:  # .islower() es una Funcion que busca en la cadena de caracteres si al menos un Caracter esta en minusculas            minuscula = True  # Si se encuentra una minuscula se cambia el valor a True, ya que inicialmente es Falso
        if carac.isdigit() == True:  # isdigit() es una Funcion que busca en la cadena de caracteres si al menos un Caracter es un Digito (0-9)            numeros = True  # Si se encuentra un Digito cambia el valor a True, ya que inicialmente es Falso
    if espacio == True:  # Si hay un Espacio (que se busca inicialmente en el ciclo for) mostrara el siguiente mensaje        showerror("Error SpaceBar","La contraseña no puede contener espacios")
    else:
        validar = True  # Si no posee espacios, procede a la siguiente comparación    if long < 8 and validar == True:
        showerror("Error Tamaño","Mínimo 8 caracteres")
        validar = False  # cambia a False si no se cumple el requisito mínimo 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:
        showerror("Error Seguridad","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 

Comentarios

Entradas más populares de este blog

Programa que convierta de una Unidad de Temperatura a varias

Elaboración de un Programa en Python (3.X) que solicite el nombre y lo despliegue en MessageBox