"""A list box with add/replace/delete operations.""" from Tkinter import * class App: def __init__(self, parent): self.parent = parent self.create_widgets() def create_widgets(self): self.listbox1 = Listbox( self.parent, width=20, height=10, exportselection=0) self.listbox1.pack( expand=1, fill=BOTH) self.entry1 = Entry( self.parent) self.entry1.pack(fill=BOTH) self.b_add = Button( self.parent, text="add", command=self.add_it) self.b_add.pack() self.b_replace = Button( self.parent, text="replace", command=self.replace_it) self.b_replace.pack() self.b_delete = Button( self.parent, text="delete", command=self.delete_it) self.b_delete.pack() self.entry1.bind( '', self.replace_it) self.listbox1.bind( '', self.select_it) self.listbox1.insert( 0, 'Alabama','Alaska', 'Arizona', 'etcetera') def select_it(self, event=None): index = self.getcurrent() if index >= 0: data = self.listbox1.get(index) self.entry1.delete(0, END) self.entry1.insert(END, data) self.entry1.select_range(0, END) self.entry1.focus_set() def add_it(self, event=None): data = self.entry1.get() self.entry1.select_range(0, END) self.listbox1.select_clear(0, END) self.listbox1.insert(END, data) def replace_it(self, event=None): data = self.entry1.get() self.entry1.select_range(0, END) index = self.getcurrent() if index >= 0: self.listbox1.delete(index) else: index = END self.listbox1.insert(index, data) self.listbox1.select_clear(0, END) if index != END: self.listbox1.select_set(index) def delete_it(self, event=None): index = self.getcurrent() if index >= 0: self.listbox1.delete(index) self.listbox1.select_set(index) def getcurrent(self): list = self.listbox1.curselection() if len(list) > 0: return list[0] else: return -1 # Boilerplate from here on... if __name__ == '__main__': root = Tk() app = App(root) root.mainloop()