Creating a function to make checkbutton with information from a list?
Peter Otten
__peter__ at web.de
Sun May 13 02:45:57 EDT 2007
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
More information about the Python-list
mailing list