That is very helpful. I appreciate your expeditious response. Thanks, JJ.
On Mon, Aug 31, 2009 at 12:33 PM, Cameron Laird <came...@phaseit.net> wrote: > On Mon, Aug 31, 2009 at 11:40:07AM -0400, John Jack wrote: > . > . > . > > I have a long list of objects, which I print to a GUI. I want to filter > > this list, print the filtered list to the GUI, but maintain the ability > to > > look at the previous lists. > > > > My program currently takes the list (L1), prints it to a Listbox, and > adds a > > button (B1) for the list. Next, I filter the list, print the new > filtered > > list (L2 subset of L1) to the same Listbox (removing the elements of L1 > not > > in L2), and add an additional button for the new list. And so on... > > > > How do I find a way to associate the old list L1 to the command for the > > button (B1)? Note, I do not want to create a separate command for each > > button because I want to run an unlimited number of filters. I need to > have > > B1 linked to L1, B2 linked to L2, B3 linked to L3, etc. > > > > Here is some relevant code (n.b., the whole project is much larger, so > this > > is merely a snippet). > > > > #n.b., L from the description above is all_entities. So, L1 is > > all_entities[1], etc. > > #filter_group is an index tracking the current group to be filtered. > > > > #Filter the list > > def search_entities(self): > > tmp1 = askstring('Search Entity','Entity > Type',initialvalue='gene') > > filtered = [] > > #Create sublist > > for ent in self.backend.all_entities[self.filter_group]: > > if ent.etype.endswith("findthisstring"): > > filtered.append(ent) > > > > #Store sublist > > self.backend.all_entities.append(filtered) > > self.filter_group += 1 > > self.add_filter_button() > > > > def add_filter_button(self): > > tmp = 'B%s' % self.filter_group > > filt = Button(self,text = tmp,command=self.fill_listbox(self)) > > filt.grid(row=3,column=self.filter_group,sticky=E) > > self.fill_listbox() > > > > def fill_listbox(self): > > #clear listbox > > if self.ent_listbox.size() > 0: > > self.ent_listbox.delete(0,END) > > #Restore list box > > for ent in self.backend.all_entities[self.filter_group]: > > self.ent_listbox.insert(END,ent.name) > > > > The way my code exists now, I would need to modify the variable > filter_group > > when I click a button. How can I accomplish this? How do I tell > > filter_group to be 1 if I click button 1 and 2 if I click button 2? > . > . > . > The answer is implicit in <URL: > http://tkinter.unpythonic.net/wiki/Widgets/Button >, especially > in the section titled "Parameter-passing". Is that enough of a > hint for you to reach the answer on your own? Otherwise, I > expect one of us will make time over the next thirty hours or so > to provide an explicit coding. >
_______________________________________________ Tkinter-discuss mailing list Tkinter-discuss@python.org http://mail.python.org/mailman/listinfo/tkinter-discuss