> This is a more precise question, the above was after trying different methods,
> and it got a little confusing.
>
> Why in the below does using in line 12:self.objectsvars =
> 'menuitemhere','menuitemhere','menuitemhere','menuitemhere', not work,
> but placing 'menuitemhere','menuitemhere','menuitemhere','menuitemhere'
> in line 17 directly work?
Singled out the two lines for clarity:
> 12: self.objectsvars =
> 'menuitemhere','menuitemhere','menuitemhere','menuitemhere'
> 17: self.optionmenu =
> OptionMenu(self.frame,self.var,self.objectsvars)
Because in the first case, you're passing 3 items to OptionMene: self.frame,
self.var & a tuple. The tuple itself contains four items, but it is still a
single item as passed to OptionMenu.
In the second case, you're passing 6 items total.
If you want to use self.objectsvars, using the asterisk notation to expand your
list or tuple:
OptionMenu(self.frame, self.var, *self.objectsvars)
Though I believe (haven't tried) that that actually doesn't work (depending on
how OptionMenu.__init_ is defined), and you may need to pack everything into a
single tuple, and expand that:
OptionMenu( *((self.frame, self.var) + self.objects))
So in that case, I'm adding a 2-tuple and a 4-tuple, and then expanding that. I
need extra parentheses, otherwise only the 2-tuple gets expanded.
Which of the above two cases you need, depends on how OptionMenu.__init__ is
declared:
def __init__(self, frame, var, *args)
should allow for the first, while
def __init__(self, *args)
will work in the second case, since frame and var aren't picked up separately
when calling the function.
Google and read around for 'Python args kwargs', if this went somewhat over
your head. Or just try and play with it some more.
Cheers,
Evert
>
>
> def obOpMenu(self):
> print 'Dummy' #This is my tony robins help
> import time
> self.oblist = self.canvas.find_withtag('object')
> print self.oblist
> self.list = []
> for item in self.oblist:
> self.itemname = self.canvas.gettags(item)
> if self.itemname[1] != 'default':
> self.list.append(self.itemname[1])
> print self.list
> self.objectsvars =
> 'menuitemhere','menuitemhere','menuitemhere','menuitemhere'
> print type(self.objectsvars[0])
> self.var = StringVar(self.root)
> self.var.set(self.objectsvars[0])
>
> self.optionmenu =
> OptionMenu(self.frame,self.var,self.objectsvars)
> self.optionmenu.grid(row = 1,column = 2)
>
>
> Hope that's clearer:)
> _______________________________________________
> Tutor maillist - [email protected]
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor