"Hyuga" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
On Jun 13, 11:34 am, "Reedick, Andrew" <[EMAIL PROTECTED]> wrote:
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:python-
> [EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED]
> Sent: Friday, June 13, 2008 11:11 AM
> To: [EMAIL PROTECTED]
> Subject: Iterate creating variables?

> 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?

> I appreciate any and all answers!

Either store the checkboxes in an array or hash/dictionary.  If that's
not practical, then
You can use strings to build the code and use eval to execute the string
as code.  Ex:

for i in range(10):
        code = "%d + %d" % (i, i)
        print eval(code)

Don't do this.  You want

for idx in range(10):
   setattr(self, 'checkbox_%i' % idx)

Assuming create_checkbox() is the function to create a checkbox, this will create a list of 25 checkboxes::

   checkbox = [create_checkbox() for i in xrange(25)]

--Mark

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to