Button Command with parameter in Tkinter
In this tutorial, I will show you how to pass parameters or arguments in the Tkinter button command.
We can do this in two different ways.
- Using lambda function.
- Using Nested function (Function inside a function)
The first one is much simpler as you just need to use lambda: before the function name and the second one is a bit hard.
But if you have a good understanding of how function works in Python then the second method will also be easy for you.
Using lambda function: Parameter passing to Tkinter button command function
We can simply add lambda:
before the function calling in the command section. Take a look at the code:
import tkinter as tk newWindow = tk.Tk() def saruk(myVar): print("Button pressed") print(myVar.get()) newWindow.geometry("600x600+600+200") myVar = tk.StringVar(value="codespeedy") myButton = tk.Button(newWindow, text="Click me", command= lambda:saruk(myVar)).pack() newWindow.mainloop()
Output in the console after pressing the button:
Button pressed codespeedy
Using nested function to pass arguments to Tkinter button command
Take a look at the below code. I have created two functions a()
and b()
. And I have passed myVar
as a parameter.
import tkinter as tk newWindow = tk.Tk() def a(parameter): def b(): print("Button pressed") print(parameter.get()) return b newWindow.geometry("600x600+600+200") myVar = tk.StringVar(value="codespeedy") myButton = tk.Button(newWindow, text="Click me", command= a(myVar)).pack() newWindow.mainloop()
Output in the console after pressing the button:
Button pressed codespeedy
Leave a Reply