0

I am messing a little bit with code trying to learn new skills as the noob I am, and now I am learning TKinter on Python 3.x. Everything is ok until conditionals, but I am trying to start something simple like an "user access interface" simulator. Just the classic if True conditional.

So the thing is you as the user need to introduce your username and password. I only made a password limitation to make the example easier. But for some reason, always when I write the correct password, the conditional determines that the conditional is False and executes the else.

I've tried to change the word or even make an "if password_input is str:" to check the simplest way if the conditional is even going to work, but still getting an error.

Thanks in advance for your help. The code is as follows:

from tkinter import *

ROOT = Tk()
ROOT.geometry("500x300+50+50")
ROOT.config(bg="grey")
ROOT.title("Ventana de acceso")

user_tag = Label(text="Usuario: ")
user_tag.grid(row=0, column=0)
user_tag.config(bg="grey", font=("Arial", 16))

password_tag = Label(text="Contraseña: ")
password_tag.grid(row=1, column=0)
password_tag.config(bg="grey", font=("Arial", 16))

user_input = Entry()
user_input.grid(row=0, column=1)
user_input.config(bg="red", font=("Comic Sans", 16))
user_input.insert(0, "Introduce tu usuario...") # Olvidé poner el argumento de posición

password_input = Entry()
password_input.grid(row=1, column=1)
password_input.config(bg="red", font=("Comic Sans", 16), show="*")
password_input.insert(0, "***********")

space_0 = Label(text=" ")
space_0.grid(row=3)
space_0.config(bg="grey")

space_1 = Label(text=" ")
space_1.grid(row=4, column=0)
space_1.config(bg="grey")

space_2 = Label(text=" ")
space_2.grid(row=2, column=0)
space_2.config(bg="grey")

def click_check_button():
    if password_input == "python":
        access_granted = Label(text="¡Acceso concedido!")
        access_granted.grid(row=4, column=1)
        access_granted.config(bg="green", font=("Arial", 22))

    else:
        access_denied = Label(text="¡Acceso denegado!")
        access_denied.grid(row=4, column=1)
        access_denied.config(bg="red", font=("Arial", 22))


check_button = Button(text="Acceder", font=("Arial", 20))
check_button.grid(row=2, column=1)
check_button.config(bg="yellow", activebackground="orange", command=click_check_button)


ROOT.mainloop()

1 Answer 1

5

You need to call get() on password_input to get the content of the Entry widget

if password_input.get() == "python":

As written, password_input evaluates to the Entry itself, which as you might have figured isn't a string! Hope that helps!

Sign up to request clarification or add additional context in comments.

1 Comment

It doesn't just help, it fixes it! Thank you so much. I didn't realize about the .get(), but now I see I need to add the .get() every time I want to call info from the Entry(). Thank you so much!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.