Ответ 1
Это поведение Windows - оно работает так, как вы ожидаете в GTK. Лично я оставил ваше приложение таким, какое оно есть, для согласованности с другими приложениями Windows и установите WizMouse
Я разрабатываю приложение, содержащее несколько панелей. Смотрите снимок экрана:
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
к каждой подпанели или элементу управления?
Спасибо
Это поведение Windows - оно работает так, как вы ожидаете в GTK. Лично я оставил ваше приложение таким, какое оно есть, для согласованности с другими приложениями Windows и установите WizMouse