Tkinter button commands with lambda in Python

Lambda functions (also called anonymous functions) are very useful in Tkinter GUI applications. They allow us to pass arguments to callback functions when button events occur. In Tkinter button commands, lambda is used to create inline functions that can pass specific data to callback functions.

Syntax

The basic syntax for using lambda with Tkinter button commands is ?

button = Button(root, text="Click Me", command=lambda: function_name(arguments))

Example

In this example, we will create an application with multiple buttons. Each button uses a lambda function to pass a specific value to a common callback function ?

# Import the library
from tkinter import *
from tkinter import ttk

# Create an instance of Tkinter frame
win = Tk()

# Set the window geometry
win.geometry("750x250")

# Display a Label
def print_text(text):
    Label(win, text=text, font=('Helvetica', 13, 'bold')).pack()

btn1 = ttk.Button(win, text="Button1", command=lambda: print_text("Button 1"))
btn1.pack(pady=10)

btn2 = ttk.Button(win, text="Button2", command=lambda: print_text("Button 2"))
btn2.pack(pady=10)

btn3 = ttk.Button(win, text="Button3", command=lambda: print_text("Button 3"))
btn3.pack(pady=10)

win.mainloop()

How It Works

The lambda function creates an anonymous function that calls print_text() with different arguments. When a button is clicked, the corresponding lambda function executes and passes the specific text to the callback function.

Alternative Approaches

Using Partial Functions

You can also use functools.partial as an alternative to lambda ?

from tkinter import *
from functools import partial

win = Tk()
win.geometry("400x200")

def print_text(text):
    Label(win, text=text, font=('Arial', 12)).pack()

# Using partial instead of lambda
btn1 = Button(win, text="Click Me", command=partial(print_text, "Hello World!"))
btn1.pack(pady=10)

win.mainloop()

Key Points

  • Lambda functions allow passing arguments to button callback functions
  • Each lambda creates a closure that captures the argument value
  • Lambda is more concise than defining separate wrapper functions
  • Use functools.partial as an alternative for complex scenarios

Conclusion

Lambda functions provide a clean way to pass arguments to Tkinter button commands. They eliminate the need for multiple wrapper functions and make the code more concise and readable.

Updated on: 2026-03-25T19:39:02+05:30

32K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements