Hi Fred, Yeah, this question hit my "curiousity bump" and I have been "investigating" it on and off - as time allows :-)
I "discovered" what you have detailed - the last Tk object "bound" is the one that tries to interpret the call (via self._w) - and if that happened to be the Scrollbar then the Listbox methods become "lost" for want of a better term - and vice versa. I then started to look at "intercepting" the unsuccessful call i.e. before the exception is raised, to see if I could potentially "re-route" the request at run-time - but couldn't work out how to do that, I suspect you can't? Peter On Wed, Aug 13, 2008 at 7:07 PM, Fredrik Lundh <[EMAIL PROTECTED]>wrote: > 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 >
_______________________________________________ Tkinter-discuss mailing list Tkinter-discuss@python.org http://mail.python.org/mailman/listinfo/tkinter-discuss