Iterate creating variables?

Diez B. Roggisch deets at nospam.web.de
Fri Jun 13 11:48:54 EDT 2008


tdahsu at gmail.com schrieb:
> On Jun 13, 11:21 am, "Diez B. Roggisch" <de... at nospam.web.de> wrote:
>> tda... at gmail.com schrieb:
>>
>>
>>
>>> I have twenty-five checkboxes I need to create (don't ask):
>>> self.checkbox1 = ...
>>> self.checkbox2 = ...
>>> .
>>> .
>>> .
>>> self.checkbox25 = ...
>>> Right now, my code has 25 lines in it, one for each checkbox, since
>>> these are all variables.
>>> Is there a way to write a loop so that I can have fewer lines of code
>>> but still keep the variables?
>>> I've tried:
>>> for o in xrange(25):
>>>     self.checkbox[o] = ...
>>> which didn't work, and
>>> for o in xrange(25):
>>>     self.checkbox[''%d'%(o)] = ...
>>> which also didn't work.
>>> Both give the error message: "Attribute error: Main.App has no
>>> attribute "checkbox"", which clearly indicates that I'm not keeping
>>> the "variability" aspect I want.
>>> Is there a way?
>> Keep either a list or dictionary around. Like this:
>>
>> checkboxes = []
>>
>> for o in xrange(25):
>>      checkboxes.append(....create a checkbox...)
>>
>> self.checkboxes = checkboxes
>>
>> Diez
> 
> I don't understand... how do I then complete the assignment statement?
> 
> If I have:
> 
> self.checkbox1 = xrc.XRCCTRL(self.panel01, 'Checkbox1')
> .
> .
> .
> self.checkbox25 = xrc.XRCCTRL(self.panel01, 'Checkbox25')
> 
> using your method, wouldn't I still need to figure out my original
> question?
> 
> If I have a list of checkboxes, then I'll have:
> 
> checkboxes = [checkbox1, checkbox2 ... checkbox25]
> 
> in which case I'd still need to figure out how to get the variable at
> the end of checkbox to do the rest of the "=" statement.

I don't fully understand that. But if your code is uniform and looks 
like the above, it appears that

for o in xrange(25):
     checkboxes.append(xrc.XRCCTRL(self.panel01, 'Checkbox%i' % o))

is the way to go.

Diez



More information about the Python-list mailing list