Alan Gauld via Tutor wrote: > On 17/06/18 23:59, Ali M wrote: > >> def update_list(self): >> search_term = self.search_var.get() >> self.listbox.delete(0, tk.END) >> for item in self.listbox: > > The above pair of lines look odd. > You delete everything on the listbox then try to iterate > over it? Is that really what you want?
More likely the words have to be reread from the database. > Also are you sure you can iterate over a listbox widget? > I was not aware of that capability and can see nothing > about iterators in the listbox help screen... You cannot iterate over Listbox widgets, it's just that for every object with a __getitem__() method Python will try and feed it consecutive integers >>> class A: ... def __getitem__(self, index): ... if index > 3: raise IndexError ... return index * index ... >>> list(A()) [0, 1, 4, 9] a feature that probably predates the iterator protocol. However, the tkinter widgets expect option names like "background", or "borderstyle", and respond with the somewhat cryptic TypeError when the 0 is passed instead. > I usually use the get() method to fetch the contents > before trying to iterate over them: > > for item in myList.get(0,tk.END): > # use item > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor