I did some more digging based on your code, and discovered list comprehensions. They didn't register the first time I skimmed the language reference and tutorial. It's obvious the more I learn, the more I need to relearn what I think I know. I need to study comprehensions, but they open up lots of opportunities for simpler, clearer code.
>> return row == var.get() Oops! I saw this as soon as I sent it, but knew you would get my point. > var.set(-1) Though both ways may seem roughly equivalent today, I'd bet that in 6 months ... var.set(-1) # initialize as no choice ... will be clearer. Thanks again! Bill Peter Otten wrote: > William Gill wrote: > > >>Also, does 'row == var.get() for var in self.variables' perform the >>comparison row == var.get() for each item in self.variables? I would >>have had to write: >> >>for var in self.variables: >> return row == var.get() > > > Or rather > > result = [] > for var in self.variables: > result.append(row == var.get()) > return tuple(result) > > This can be rewritten to a 'list comprehension' > > return tuple([row == var.get() for var in self.variables]) > > and, since Python 2.4, to the 'generator expression' that I used and which > avoids building the intermediate list. Both constructs also feature an > if-clause, see > > http://docs.python.org/tut/node7.html#SECTION007140000000000000000 > http://docs.python.org/tut/node11.html#SECTION00111100000000000000000 > > >>p.s. I tweaked >> >>rbn = tk.Radiobutton(self, text=text, variable=var, value=y) >>to >>rbn = tk.Radiobutton(self, text=text, variable=var, value=y+1) >> >>and >> >>return tuple(row == var.get() for var in self.variables) >>to >>return tuple(row+1 == var.get() for var in self.variables) >> >>so that the Radiogrid doesn't initialize w/row 1 selected, and >>accomodates cases where nothing is selected in any column. > > > Another option would have been to initialize the variables > > ... > var = tk.IntVar() > var.set(-1) > if trace_write: > ... > > Peter > -- http://mail.python.org/mailman/listinfo/python-list