Thomas Jansson wrote: > Dear all > > I am writing a program with tkinter where I have to create a lot of > checkbuttons. They should have the same format but should have > different names. My intention is to run the functions and the create > all the buttons with the names from the list. > > I now the lines below doesn't work, but this is what I have so far. I > don't really know how call the element in the dict use in the for > loop. I tried to call +'item'+ but this doesn't work. > > def create_checkbox(self): > self.checkbutton = ["LNCOL", "LFORM", "LPOT", "LGRID", "LERR", > "LCOMP"] > for item in self.checkbutton: > self.+'item'+Checkbutton = Chekcbutton(frame, onvalue='t', > offvalue='f', variable=self.+'item'+) > self.+'item'+Checkbutton.grid() > > How should I do this?
You /could/ use setattr()/getattr(), but for a clean design putting the buttons (or associated variables) into a dictionary is preferrable. def create_checkbuttons(self): button_names = ["LNCOL", "LFORM", "LPOT", "LGRID", "LERR", "LCOMP"] self.cbvalues = {} for row, name in enumerate(button_names): v = self.cbvalues[name] = IntVar() cb = Checkbutton(self.frame, variable=v) label = Label(self.frame, text=name) cb.grid(row=row, column=0) label.grid(row=row, column=1) You can then find out a checkbutton's state with self.cbvalues[name].get() Peter -- http://mail.python.org/mailman/listinfo/python-list