Я разрабатываю приложение, которое содержит несколько панелей. Смотрите скриншот :
![screenshot](https://i.stack.imgur.com/4d2KN.png)
- Левая панель настроек представляет собой
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
к каждой панели или элементу управления?
Спасибо