Как перехватить события на дочерних виджетах tkinter?
В следующем блоке, нажав наa_frame
запускает обработчик событияon_frame_click
, но нажав наa_label
который является ребенкомa_frame
не. Есть ли способ заставитьa_frame
отлавливать и обрабатывать события, которые возникли у его потомков (предпочтительно без необходимости добавлять обработчики непосредственно к дочерним элементам)? Я использую Python 3.2.3.
import tkinter
def on_frame_click(e):
print("frame clicked")
tk = tkinter.Tk()
a_frame = tkinter.Frame(tk, bg="red", padx=20, pady=20)
a_label = tkinter.Label(a_frame, text="A Label")
a_frame.pack()
a_label.pack()
tk.protocol("WM_DELETE_WINDOW", tk.destroy)
a_frame.bind("<Button>", on_frame_click)
tk.mainloop()