Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I change the text of Listbox item?

I have a Listbox full of items, and I need to change an item's text. Using item configure I can only find out how to change colors.

How can I change the item text on a Tkinter Listbox?

like image 876
user1032861 Avatar asked Jul 08 '13 15:07

user1032861


2 Answers

To change the text you will have to delete and re-add an item at the proper index.

Here is a contrived example that continuously updates the second item in the listbox:

import Tkinter as tk
import time

class Example(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent)

        self.lb = tk.Listbox(self)
        self.lb.pack(fill="both", expand=True)

        self.lb.insert("end", "item 1","the current time", "item 3")

        self.after(1000, self._update_listbox)

    def _update_listbox(self):
        self.lb.delete(1)
        self.lb.insert(1, time.asctime())

        self.after(1000, self._update_listbox)

if __name__ == "__main__":
    root = tk.Tk()
    Example(root).pack(fill="both", expand=True)
    root.mainloop()
like image 152
Bryan Oakley Avatar answered Oct 19 '22 18:10

Bryan Oakley


You have first to delete the old item (specifying its index), using the delete method of your Listbox object:

myList.delete(index, old_item)

and then insert your updated_item at position of you old item:

myList.insert(index, updated_item)
like image 5
csterling Avatar answered Oct 19 '22 19:10

csterling