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