Я разрабатываю приложение, содержащее несколько панелей. Смотрите снимок экрана:

- Левая панель настроек - это
wx.ScrolledPanel, которая содержит числоwx.Panels. - Верхняя панель событий -
wx.grid.Grid. - Нижняя панель данных - это
wx.Panel, которая содержитwx.grid.Grid. - Средняя панель сюжета - это
wx.Panel, содержащая график enthought chaco. - Правая панель детектора -
wx.Panel.
Я хотел бы реализовать фокус, следуя за мышью, чтобы при перемещении мыши по сюжету я могу сразу увеличивать или уменьшать масштаб с помощью колеса прокрутки без предварительного щелчка по графику, чтобы придать ему фокус.
Аналогично, когда я перемещаю мышь над левыми настройками, верхними событиями или нижними панелями данных, я хотел бы иметь возможность немедленно прокручивать окно с помощью колеса прокрутки без первого щелчка по окну.
В настоящее время я определил функцию:
def focusFollowsMouse(window):
window.Bind(wx.EVT_ENTER_WINDOW, lambda event: window.SetFocus())
Я хотел бы применить эту функцию только к четырем верхним уровням: сюжет, настройки, события и данные.
Однако мне нужно вызвать эту функцию для каждой панели или элемента управления в каждой из панелей верхнего уровня, чтобы заставить это работать. Например, мне нужно применить эту функцию по отдельности к панелям параметров измерения, параметров анализа, просмотра и т.д.
Скорее всего, событие EVT_ENTER_WINDOW не распространяется на родительские окна.
Есть ли способ заставить это работать, не применяя focusFollowsMouse к каждой подпанели или элементу управления?
Спасибо