Peter Milliken wrote:
Well, here are some clues - the "multiple" inheritance doesn't seem to
work the way the manual *implies* it should i.e. multiple inheritance is
described as searching for methods in the first inheritance and then all
it's ancestors, then onto the next and all its ancestors and so on.
Tkinter widget instances are proxy objects that delegate method calls to
an underlying Tk widget. A widget instance can only be bound to a
single Tk widget.
Multiple inheritance works as usual at the Tkinter class level, but that
doesn't help if the widget instance is not bound to the right Tk object
when you do a method call.
To get an "insert" (Listbox) method on your class you need to invoke the
__init__ method on the super classes (sub-classes should always invoke
the initialisation of their super class anyway - so that is something
your class definition is definitely missing!) i.e.
Listbox.__init__(self)
That binds the widget to the underlying Tk listbox widget (see the code
in Tkinter's BaseWidget for details). After this call, any method calls
will be forwarded to the Tk listbox.
> Listbox.__init__(self)
> Scrollbar.__init__(self)
>
> And viola! ScrolledList now has the methods of Scrollbar - and "lost"
> the methods of Listbox.
After those calls, the widget instance ends up being bound to a Tk
scrollbar widget. There's no change in what methods the object has at
the Python level, though.
</F>
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
http://mail.python.org/mailman/listinfo/tkinter-discuss