es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hago que el cuadro de diálogo aparezca después de que se cumplan las condiciones?

Estoy tratando de crear una pantalla de inicio de sesión a través de Tkinter, y quiero que el cuadro de diálogo muestre un mensaje cuando el usuario haya ingresado el nombre de usuario y la contraseña correctos, o no los haya ingresado correctamente.
Cuando ejecuto el programa e ingreso el nombre de usuario y la contraseña, el cuadro de diálogo no aparece. ¿Hay alguna forma de solucionarlo?

from tkinter import *
from tkinter import messagebox

root = Tk()
root.geometry("300x270")
root.title("Inicio de sesión del personal")
root.resizable(False, False)
root.configure(background="black")

label = Label(root, text="Inicio de sesión del personal")
frame_heading = Frame(root)
frame_heading.grid(row=0, column=0, columnspan=2, padx=25, pady=10)

frame_entry = Frame(root)
frame_entry.grid(row=1, column=0, columnspan=2, padx=25, pady=10)

Label(frame_heading, text="Inicio de sesión del personal", font=('Arial',16))\
.grid(row=0, column=0, padx=0, pady=5)

Label(frame_entry, text="Nombre de usuario:")\
.grid(row=2, column=0, padx=10, pady=5)
Label(frame_entry, text="Contraseña:")\
.grid(row=3, column=0, padx=10, pady=5)

def login():
    label.config(text="iniciar sesión")
    username = Entry(frame_entry, width=15, bg="white")
    username.grid(row=2, column=1, padx=5, pady=5)

    password = Entry(frame_entry, width=15, bg="white")
    password.grid(row=3, column=1, padx=5, pady=5)

loginbutton = Button(root, text="Iniciar sesión", width=7, command=login)
loginbutton.grid(row=2, column=0, padx=0, pady=5)

def loginbutton():
    username = username_entry.get()
    password = password_entry.get()
    if (username == 'admin' and password == 'abcd1234'):
        messagebox.showinfo('Info', 'Inicio de sesión correcto')
    else:
        messagebox.showinfo('Info', 'Inicio de sesión inválido')

root.mainloop()
Tags:  , ,

Answer

  1. Avatar for davy.ai

    La función de inicio de sesión definida en el código crea dos widgets Entry para el nombre de usuario y la contraseña, pero no verifica si las credenciales de inicio de sesión ingresadas por el usuario son válidas o no. Además, hay otra función llamada ‘loginbutton’ que no se utiliza en ninguna parte del código.

    Para solucionar el problema y mostrar un cuadro de diálogo con el estado de inicio de sesión, modifica el código de la siguiente manera:

    1. Cambia el nombre de la función ‘loginbutton’ a algo diferente, como ‘validate_login’.
    2. Dentro de la función ‘validate_login’, obtén los valores ingresados por el usuario en los widgets Entry de nombre de usuario y contraseña, y luego verifica si coinciden con las credenciales correctas. Si coinciden, muestra un cuadro de diálogo con el mensaje “Inicio de sesión correcto”. De lo contrario, muestra un cuadro de diálogo con el mensaje “Inicio de sesión inválido”.

    3. Llama a la función ‘validate_login’ cuando se hace clic en el botón de inicio de sesión, cambiando el atributo de comando del widget de botón a ‘validate_login’.

    Aquí está el código modificado:

    from tkinter import *
    from tkinter import messagebox
    
    root = Tk()
    root.geometry("300x270")
    root.title("Inicio de sesión del personal")
    root.resizable(False, False)
    root.configure(background ="black")
    
    label = Label(root, text = "Inicio de sesión del personal")
    frame_heading = Frame(root)
    frame_heading.grid(row=0, column=0, columnspan=2, padx=25,pady=10)
    
    frame_entry = Frame(root)
    frame_entry.grid(row=1, column=0, columnspan=2, padx=25, pady=10)
    
    Label(frame_heading,text ="Inicio de sesión del personal",
    font =('Arial',16))\
                      .grid(row=0, column=0, padx=0, pady=5)
    
    Label(frame_entry, text = "Nombre de usuario:")\
                    .grid(row=2, column=0, padx=10, pady=5)
    Label(frame_entry, text = "Contraseña:")\
                    .grid(row=3, column=0, padx=10, pady=5)
    
    def validate_login():
        username = username_entry.get()
        password = password_entry.get()
        if (username == 'admin' and password == 'abcd1234'):
            messagebox.showinfo('info', 'Inicio de sesión correcto')
        else:
            messagebox.showinfo('info', 'Inicio de sesión inválido')
    
    username_entry = Entry(frame_entry, width = 15, bg = "white")
    username_entry.grid(row=2, column=1, padx=5,pady=5)
    
    password_entry = Entry(frame_entry, width = 15, bg = "white", show="*")
    password_entry.grid(row=3, column=1, padx=5,pady=5)
    
    login_button = Button(root, text="Iniciar sesión",width=7,
                         command=validate_login)
    login_button.grid(row=2, column=0, padx=0, pady=5)
    
    root.mainloop()
    

    En el código modificado, hemos agregado dos widgets Entry ‘username_entry’ y ‘password_entry’ para el nombre de usuario y la contraseña respectivamente. También hemos modificado la función ‘validate_login’ para obtener los valores ingresados por el usuario en estos widgets utilizando su método ‘get()’.

    La función ‘validate_login’ luego verifica si las credenciales ingresadas coinciden con el nombre de usuario y la contraseña correctos. Si coinciden, muestra un cuadro de diálogo con el mensaje “Inicio de sesión correcto”. De lo contrario, muestra un cuadro de diálogo con el mensaje “Inicio de sesión inválido”.

    Finalmente, hemos establecido el atributo de comando del botón de inicio de sesión en ‘validate_login’, para que se llame a la función ‘validate_login’ cuando se hace clic en el botón.

Comments are closed.