Tkinter menu checkbutton not working

rantingrick rantingrick at gmail.com
Wed Jun 9 14:37:11 EDT 2010


On Jun 9, 12:20 pm, Dodo <dodo_do_not_wake... at yahoo.Fr> wrote:
> Le 09/06/2010 18:54, rantingrick a crit :
>
>
>
>
>
> > On Jun 9, 11:26 am, Dodo<dodo_do_not_wake... at 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. ;-)



More information about the Python-list mailing list