[Tkinter-discuss] Help on subclassing - Tkinter.Menu
thicket
mark_eastwood at ntlworld.com
Sun Sep 13 14:27:24 CEST 2009
Michael
it does (help) - thank you
cheers
Michael Lange wrote:
>
> Hi,
>
> On Sat, 12 Sep 2009 18:34:09 -0700 (PDT)
> thicket <mark_eastwood at ntlworld.com> wrote:
>
> (...)
>>
>> #!/usr/bin/env python
>> from Tkinter import *
>>
>> class MyMenu(Menu):
>> def __init__(self,parent):
>> Menu.__init__(self,parent, tearoff=0)
>> self.label1="Mylabel"
>> self.label2="Myexit"
>>
>> def my_add(self):
>> self.add_command(label=self.label1,
>> command=root.quit)
>> # did not expect this to work
>> Menu.add_command(self,label=self.label2,
>> command=root.quit)
>> # this I thought may work
>>
>> root = Tk()
>> menubar = Menu(root)
>> menu=MyMenu(menubar)
>> menu.my_add()
>> menubar.add_cascade(label="Test", menu=menu)
>>
>> root.config(menu=menubar)
>> mainloop()
>>
>> What I would like to do is not hardcode the 'tearoff=0' in the parent
>> class constructor i.e. instantiate MyMenu by
>> menu=MyMenu(menubar, tearoff=0)
>
> You can achieve this by changing the MyMenu constructor so it will
> accept keyword arguments and pass them to the Menu class.
>
> class MyMenu(Menu):
> def __init__(self,parent, **kw):
> Menu.__init__(self,parent, **kw)
>
>>
>> Also not 100% sure why both add_command() statements in my_add() work?
>
> In your example "root" is defined globally. It would not work if you
> put root = Tk() and the following lines inside a function definition
> and then the script calls this function.
> If you want it to be more obvious you can keep a reference to the
> parent inside the MyMenu class, so the constrctor may look like:
>
> class MyMenu(Menu):
> def __init__(self,parent, **kw):
> Menu.__init__(self,parent, **kw)
> self.parent = parent
>
> However, as long as you need only the quit() method from "root", you
> can use self.quit() as well, because any Tkinter widget has a quit()
> method.
>
> HTH
>
> Michael
> _______________________________________________
> Tkinter-discuss mailing list
> Tkinter-discuss at python.org
> http://mail.python.org/mailman/listinfo/tkinter-discuss
>
>
--
View this message in context: http://www.nabble.com/Help-on-subclassing---Tkinter.Menu-tp25419747p25422810.html
Sent from the Python - tkinter-discuss mailing list archive at Nabble.com.
More information about the Tkinter-discuss
mailing list