Login

Creamos el archivo login.py y escribimos el siguiente código
 
  
    
import sqlite3
import tkinter as tk
from tkinter import messagebox


def bloquear_cierre():
    pass

def verificar_credenciales():
    email = entry_usuario.get()
    contra = entry_contrasena.get()
    conexion = sqlite3.connect('miconoprac.db')
    cursor = conexion.cursor()
    cursor.execute('SELECT * FROM usuario WHERE email = ? AND password = ?', (email,contra))

    usuario_valido = cursor.fetchone()

    conexion.close()



    if  usuario_valido:
        if email == usuario_valido[3] and contra == usuario_valido[4]:
            messagebox.showinfo("Éxito", "¡Inicio de sesión exitoso!")
            ventana.withdraw()
            abrir_ventana_principal()

    else:
        messagebox.showerror("Error", "Usuario o contraseña incorrectos")


def abrir_ventana_principal():
    # Creamos la nueva ventana
    ventana_principal = tk.Toplevel()
    ventana_principal.title("Mi Control de nómina práctico")
    ventana_principal.geometry("400x300")
    barra_menus = tk.Menu()
    menu_usuario = tk.Menu(barra_menus, tearoff=False)
    menu_nomina = tk.Menu(barra_menus, tearoff=False)
    menu_salir = tk.Menu(barra_menus, tearoff=False)
    barra_menus.add_cascade(menu=menu_usuario, label="Usuarios")
    barra_menus.add_cascade(menu=menu_nomina, label="Nómina")
    barra_menus.add_cascade(menu=menu_salir, label="Salir")
    menu_salir.add_command(label="Salir", command=ventana.destroy)
    # Elementos de la nueva ventana
    tk.Label(ventana_principal, text="MICONOPRAC", font=("Arial", 18)).pack(pady=50)
    ventana_principal.protocol("WM_DELETE_WINDOW", bloquear_cierre)
    ventana_principal.config(menu=barra_menus)




# Configuración de la ventana principal
ventana = tk.Tk()
ventana.title("Inicio de sesión")
ventana.geometry("400x500")
ventana.eval('tk::PlaceWindow . center') # Centra la ventana en la pantalla

# Etiquetas y campos de entrada
tk.Label(ventana, text="Email:").pack(pady=10)
entry_usuario = tk.Entry(ventana,width=30)
entry_usuario.pack()

tk.Label(ventana, text="Contraseña:").pack(pady=10)
entry_contrasena = tk.Entry(ventana, show="*",width=30) # El 'show' oculta los caracteres
entry_contrasena.pack()

# Botón de Login
tk.Button(ventana, text="Iniciar Sesión", command=verificar_credenciales).pack(pady=20)

# Bucle principal para mantener la ventana abierta
ventana.mainloop()	  

	  
	  
	  
    
   

Primera prueba

Corremos el ejemplo para probar login metemos el email y password y le damos Iniciar Sesión
phyton project
Le damos aceptar
phyton project
phyton project