How to clear a Tkinter ListBox?

The Tkinter ListBox widget displays a list of selectable items with scrolling capability. To clear all items from a ListBox, use the delete(0, END) method. You can also delete individual items using delete() with specific indices.

Basic ListBox Clearing

The delete() method removes items from the ListBox. Use 0 as the start index and END to clear all items ?

from tkinter import *
from tkinter import ttk

# Create main window
win = Tk()
win.geometry("500x300")
win.title("Clear ListBox Example")

# Create ListBox widget
listbox = Listbox(win, width=40, height=8, font=('Arial', 12))
listbox.pack(pady=20)

# Add sample items
items = ["Apple", "Banana", "Cherry", "Date", "Elderberry"]
for item in items:
    listbox.insert(END, item)

def clear_listbox():
    listbox.delete(0, END)
    status_label.config(text="ListBox cleared!")

def add_items():
    for item in items:
        listbox.insert(END, item)
    status_label.config(text="Items added back")

# Create buttons
button_frame = Frame(win)
button_frame.pack(pady=10)

clear_btn = Button(button_frame, text="Clear ListBox", command=clear_listbox, bg="red", fg="white")
clear_btn.pack(side=LEFT, padx=5)

add_btn = Button(button_frame, text="Add Items", command=add_items, bg="green", fg="white")
add_btn.pack(side=LEFT, padx=5)

# Status label
status_label = Label(win, text="ListBox ready", font=('Arial', 10))
status_label.pack(pady=5)

win.mainloop()

Deleting Selected Items

Use curselection() to get selected indices and delete specific items ?

from tkinter import *

win = Tk()
win.geometry("500x350")
win.title("Delete Selected Items")

# Create ListBox with multiple selection
listbox = Listbox(win, width=40, height=10, selectmode=MULTIPLE, font=('Arial', 11))
listbox.pack(pady=20)

# Add programming languages
languages = ["Python", "Java", "JavaScript", "C++", "Go", "Rust", "Ruby", "PHP"]
for lang in languages:
    listbox.insert(END, lang)

def delete_selected():
    selected = listbox.curselection()
    # Delete from highest index to lowest to avoid index shifting
    for index in reversed(selected):
        listbox.delete(index)
    
    count = len(selected)
    status_label.config(text=f"Deleted {count} item(s)")

def clear_all():
    listbox.delete(0, END)
    status_label.config(text="All items cleared")

def reset_list():
    listbox.delete(0, END)
    for lang in languages:
        listbox.insert(END, lang)
    status_label.config(text="List reset")

# Create control buttons
control_frame = Frame(win)
control_frame.pack(pady=10)

Button(control_frame, text="Delete Selected", command=delete_selected, bg="orange").pack(side=LEFT, padx=5)
Button(control_frame, text="Clear All", command=clear_all, bg="red", fg="white").pack(side=LEFT, padx=5)
Button(control_frame, text="Reset", command=reset_list, bg="blue", fg="white").pack(side=LEFT, padx=5)

# Instructions and status
Label(win, text="Hold Ctrl and click to select multiple items", font=('Arial', 9), fg="gray").pack()
status_label = Label(win, text="Ready", font=('Arial', 10), fg="blue")
status_label.pack(pady=5)

win.mainloop()

Methods Summary

Method Purpose Example
delete(0, END) Clear all items Remove entire list
delete(index) Delete single item Remove item at position 2
curselection() Get selected indices Returns tuple of selected positions

Key Points

  • END is a Tkinter constant representing the last position
  • When deleting multiple selected items, iterate from highest to lowest index
  • Use selectmode=MULTIPLE to allow multiple selections
  • Always check if items exist before attempting deletion

Conclusion

Use delete(0, END) to clear all ListBox items, or curselection() with delete() to remove specific selections. Always delete from highest index downward when removing multiple items.

Updated on: 2026-03-26T00:10:38+05:30

14K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements