From: Dodo on
Le 09/06/2010 20:37, rantingrick a �crit :
> On Jun 9, 12:20 pm, Dodo<dodo_do_not_wake...(a)yahoo.Fr> wrote:
>> Le 09/06/2010 18:54, rantingrick a crit :
>>
>>
>>
>>
>>
>>> On Jun 9, 11:26 am, Dodo<dodo_do_not_wake...(a)yahoo.Fr> wrote:
>>>> Hello,
>>
>>>> I trying to make this piece of code work (this is python3)
>>
>>>> from tkinter import *
>>>> from tkinter.ttk import *
>>
>>>> class Window:
>>>> def __init__(self):
>>>> self.root = Tk()
>>
>>>> self.menu = Menu(self.root)
>>>> self.root['menu'] = self.menu
>>
>>>> self.submenu = Menu(self.menu)
>>>> self.ck = 0
>>>> self.submenu.add_checkbutton(label="My checkbutton",
>>>> variable=self.ck, command=self.displayCK)
>>>> self.menu.add_cascade(label="sub", menu=self.submenu )
>>
>>>> def displayCK(self):
>>>> print( self.ck )
>>
>>>> app = Window()
>>>> app.root.mainloop()
>>
>>> see my recent post on your last question. The way you are writing
>>> these classes is wrong. Always inherit from something, in this case
>>> Tk. Fix that first and then pretty up this GUI. But to answer your
>>> question "self.ck" needs to be an instance of tk.IntVar. Read more
>>> about it here...
>>
>>> http://infohost.nmt.edu/tcc/help/pubs/tkinter/checkbutton.html
>>
>> I already tried with self.ck = IntVar()
>> and now it displays PY_VAR0
>>
>> FYI, I'm using Thunderbird 3, which appears to have some bugs with
>> indentation (according to Alf P. Steinbach). That's why I replaced \t by
>> a single space
>
> IntVar is a class and self.ck is an instance of that class which is a
> PY_VAR. Try print(dir(self.ck)) in your callback to see what methods
> are available to this instance. Im just speculating here but somehow
> there must be a way to "get" and "set" the IntVar's value... hmmm?
>
> You're about to kick yourself when you realize it. ;-)

thanks I realised it eventually