On Jun 13, 12:19 pm, Calvin Spealman <[EMAIL PROTECTED]> wrote: > On Jun 13, 2008, at 11:56 AM, [EMAIL PROTECTED] wrote: > > > > > On Jun 13, 11:48 am, "Diez B. Roggisch" <[EMAIL PROTECTED]> wrote: > >> [EMAIL PROTECTED] schrieb: > > >>> On Jun 13, 11:21 am, "Diez B. Roggisch" <[EMAIL PROTECTED]> wrote: > >>>> [EMAIL PROTECTED] 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 > > > Thank you, this is much closer to where I need to be... > > > The issue is (and this is the part that you don't know, because I > > didn't tell you!) is that I later need to call methods on > > "self.checkbox1", for instance: > > > self.checkbox1.GetValue() > > self.checkbox[1].GetValue() is only two more characters and more > readable, because it expresses that you have this list of checkboxes, > where as "self.checkbox1" could be an odd name and all on its own, no > others at all, etc. > > Variable variable names are a good thing to avoid. Thats why we have > containers. > > > > > to determine if the box is checked or not. > > > I should have included that piece in the initial problem description; > > my apologies. > > -- > >http://mail.python.org/mailman/listinfo/python-list > >
I don't think I'm being clear enough. Thanks to everyone for their help. -- http://mail.python.org/mailman/listinfo/python-list