How to remove multiple selected items in the listbox in Tkinter?

When working with Tkinter's Listbox widget, you might need to remove multiple selected items. This requires setting the selection mode to allow multiple selections and implementing proper deletion logic.

Setting Up Multiple Selection

To enable multiple item selection in a Listbox, use selectmode=MULTIPLE. This allows users to select multiple items by clicking while holding Ctrl or Shift.

Example

Here's a complete example showing how to remove multiple selected items from a Listbox ?

# Import the required libraries
from tkinter import *

# Create an instance of tkinter frame or window
win = Tk()

# Set the geometry
win.geometry("700x400")

# Create a text Label
label = Label(win, text="Select items from the list", font=('Poppins bold', 18))
label.pack(pady=20)

# Define the function to delete selected items
def delete_item():
    selected_items = my_list.curselection()
    # Delete in reverse order to avoid index shifting
    for item in selected_items[::-1]:
        my_list.delete(item)

# Create the listbox with multiple selection mode
my_list = Listbox(win, selectmode=MULTIPLE)
my_list.pack()

# List of items to populate the listbox
items = ['C++', 'Java', 'Python', 'Rust', 'Ruby', 'Machine Learning']

# Add items to the listbox
for item in items:
    my_list.insert(END, item)

# Create a button to remove the selected items
Button(win, text="Delete", command=delete_item).pack(pady=10)

# Keep the window running
win.mainloop()

How It Works

The key components of this solution are:

  • selectmode=MULTIPLE: Allows selecting multiple items in the listbox
  • curselection(): Returns a tuple of indices of currently selected items
  • Reverse iteration: Using [::-1] prevents index shifting issues when deleting multiple items
  • delete() method: Removes items at specified indices

Why Delete in Reverse Order?

When deleting multiple items, we iterate through the selected indices in reverse order. This prevents index shifting problems that occur when deleting from the beginning of the list.

# Example showing the importance of reverse deletion
selected_items = (1, 3, 5)  # Indices of selected items

# Wrong way - indices shift after each deletion
# for item in selected_items:  # Don't do this
#     my_list.delete(item)

# Correct way - delete from highest index to lowest
for item in selected_items[::-1]:
    my_list.delete(item)

Selection Modes

Tkinter Listbox supports different selection modes:

Mode Description Selection Method
SINGLE Default mode Click to select one item
BROWSE Single selection Drag to browse items
MULTIPLE Multiple selection Ctrl+Click for multiple items
EXTENDED Extended selection Shift+Click for range selection

Conclusion

To remove multiple items from a Tkinter Listbox, use selectmode=MULTIPLE and delete selected items in reverse order using curselection()[::-1]. This prevents index shifting issues and ensures all selected items are properly removed.

Updated on: 2026-03-25T16:55:53+05:30

896 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements