Running multiple commands when a button is pressed in Tkinter

The Button widget in Tkinter provides a way to trigger actions in your application. Sometimes you need a single button to perform multiple operations simultaneously. This can be achieved using lambda functions that execute multiple callback functions in sequence.

Using Lambda Functions for Multiple Commands

The most common approach is to use a lambda function that calls multiple functions in a list ?

from tkinter import *

# Create an instance of Tkinter Frame
win = Tk()
win.geometry("700x350")
win.title("Multiple Commands Example")

# Define functions
def display_msg():
    label.config(text="Top List of Programming Languages")

def show_list():
    listbox = Listbox(win, height=10, width=15, bg='lightgray', 
                     activestyle='dotbox', font=('Arial', 10))
    listbox.insert(1, "Python")
    listbox.insert(2, "Java")
    listbox.insert(3, "C++")
    listbox.insert(4, "Go")
    listbox.insert(5, "Ruby")
    listbox.pack(pady=10)
    button.destroy()

# Create a Label widget to display the message
label = Label(win, text="", font=('Arial', 18, 'bold'))
label.pack(pady=20)

# Define a Button widget with multiple commands
button = Button(win, text="Click Here", 
               command=lambda: [display_msg(), show_list()])
button.pack()

win.mainloop()

Alternative Method: Creating a Wrapper Function

For better readability, you can create a wrapper function that calls multiple functions ?

from tkinter import *

win = Tk()
win.geometry("400x300")
win.title("Wrapper Function Example")

def change_color():
    win.config(bg='lightblue')

def update_text():
    label.config(text="Button Clicked!", fg='red')

def play_sound():
    print("Beep! Sound played")

# Wrapper function to execute multiple commands
def execute_multiple_commands():
    change_color()
    update_text()
    play_sound()

label = Label(win, text="Click the button below", font=('Arial', 12))
label.pack(pady=20)

# Button using wrapper function
button = Button(win, text="Multi-Action Button", 
               command=execute_multiple_commands)
button.pack(pady=10)

win.mainloop()

Comparison

Method Best For Readability
Lambda Function Simple, quick operations Good for 2-3 functions
Wrapper Function Complex operations Better for many functions

Key Points

  • Lambda functions execute commands in the order they appear in the list
  • Use wrapper functions for complex multi-step operations
  • All functions are executed synchronously (one after another)
  • Error in one function may prevent subsequent functions from executing

Conclusion

Use lambda functions with lists for simple multiple commands: command=lambda: [func1(), func2()]. For complex operations, create a wrapper function that calls multiple functions sequentially.

Updated on: 2026-03-25T20:44:27+05:30

6K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements