Devesh Mullappalli
Devesh Mullappalli

Reputation: 1

Tkinter: Getting value from one function and using it in another function

In Python tkinter, I want to get the value from an Entry widget that is in one function and use that value in another function, but I am unable to do so. Here is my code:

def login():
    print("This is your username: " + username_entry.get())
    print("This is your password: " + password_entry.get())

def login_screen()
    username_label = Label(root, text="Username", font=6)
    username_label.grid(row=0, column=0, pady=5, padx=80)

    username_entry = Entry(root, font=6)
    username_entry.grid(row=1, column=0, pady=5, padx=80)

    password_label = Label(root, text="Password", font=6)
    password_label.grid(row=2, column=0, pady=5, padx=80)

    password_entry = Entry(root, font=6)
    password_entry.grid(row=3, column=0, pady=5, padx=80)
    
    login_button = Button(root, text="Login",font=3, command=login)
    login_button.grid(row=7, column=0,  pady=(10,5), padx=80)

Upvotes: 0

Views: 816

Answers (2)

quamrana
quamrana

Reputation: 39414

If you mean that you just want the entries available to the login() function, you can pass them in as parameters:

def login(username_entry, password_entry):
    print("This is your username: " + username_entry.get())
    print("This is your password: " + password_entry.get())

def login_screen()
    username_label = Label(root, text="Username", font=6)
    username_label.grid(row=0, column=0, pady=5, padx=80)

    username_entry = Entry(root, font=6)
    username_entry.grid(row=1, column=0, pady=5, padx=80)

    password_label = Label(root, text="Password", font=6)
    password_label.grid(row=2, column=0, pady=5, padx=80)

    password_entry = Entry(root, font=6)
    password_entry.grid(row=3, column=0, pady=5, padx=80)

    login_button = Button(root, text="Login",font=3,
                          command=lambda: login(username_entry, password_entry))
    login_button.grid(row=7, column=0,  pady=(10,5), padx=80)

Here I've used a lambda to defer the execution of the login function.

Upvotes: 1

Danny
Danny

Reputation: 1

You should return values that you want to use in other place. or use a class, or a global variable.

Upvotes: 0

Related Questions