[Tkinter-discuss] Binding all children
klappnase at web.de
Thu Dec 23 20:12:55 CET 2010
Thus spoketh Vasilis Vlachoudis <Vasilis.Vlachoudis at cern.ch>
unto us on Tue, 21 Dec 2010 08:58:20 +0000:
> Hi all,
> Based on the previous threads I added the nice scrolled.py
> implementation of a ScrollFrame in my application and now I wanted to
> bind the Button-4&5 and MouseWheel events to the scrolled frame. My
> frames are a bit crowded therefore the real area that belongs to the
> client-scrolledframe is minimal the rest is buttons labels lists etc...
> Therefore when I bind the <Button-4>... on the frame, I never get the
> events when the cursor is above a label or any other widget (which is
> most of the time). For the moment after the creation of each frame I am
> calling a similar like the following function recursively
> def bind_childs(w):
> if w.bind("<4>"): return
> w.bind("<4>", button4)
> w.bind("<5>", button5)
> for child in w.winfo_children():
> child.bind("<4>", button4)
> child.bind("<5>", button5)
> however I don't find it as a elegant and neat solution.
> Is there a way (like bind_all) to bind all children or to get the event
> if is is not handled by any of the children?
I don't think it's that bad at all. If you have a lot of frames and
children, maybe it is a bit nicer to define widget classes that save you
to explicitely apply the bindings for any of your Frames and their
def __init__(self, *args, **kw):
Label.__init__(self, *args, **kw)
for seq in ('<4>', '<5>'):
.-.. .. ...- . .-.. --- -. --. .- -. -.. .--. .-. --- ... .--. . .-.
Intuition, however illogical, is recognized as a command prerogative.
-- Kirk, "Obsession", stardate 3620.7
More information about the Tkinter-discuss