William Gill wrote: > I thought the problem was practical, not philosophical, but what do I > know I'm the one asking for help.
What follows looks more like a spec than a question. > columns can have 0 or 1 selection > rows can have 0,1,2,3, or 4 selections. > Loop through the 4 intVars 4 times; compare their value to the value for > the row being processed; if they are the same bitor a value to a > rowVariable i.e. convert the column information (intVar values) to row > information. Here's my implementation: import Tkinter as tk class Radiogrid(tk.Frame): def __init__(self, master, columns, trace_write=None): tk.Frame.__init__(self) self.variables = [] self.buttons = [] for x, column in enumerate(columns): var = tk.IntVar() if trace_write: var.trace_variable("w", trace_write) self.variables.append(var) self.buttons.append([]) for y, text in enumerate(column): rbn = tk.Radiobutton(self, text=text, variable=var, value=y) rbn.grid(column=x, row=y) self.buttons[-1].append(rbn) def get_row_state(self, row): return tuple(row == var.get() for var in self.variables) if __name__ == "__main__": root = tk.Tk() def show_state(*args): for i in range(3): print "row", i, rg.get_row_state(i) print rg = Radiogrid(root, ["alpha beta gamma".split(), "one two three".split(), "guido van rossum".split()], show_state ) rg.pack() root.mainloop() I hope this will move further discussion from the abstract to the concrete :-) Peter -- http://mail.python.org/mailman/listinfo/python-list