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
--
http://mail.python.org/mailman/listinfo/python-list