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

Time:02-03

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)

CodePudding user response:

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.

CodePudding user response:

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

  •  Tags:  
  • Related