wxPython中的鼠标焦点跟随?
我正在开发一个包含多个面板的应用程序。你可以看看这个截图:
- 左边的设置面板是一个
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
?
谢谢
1 个回答
2
这是Windows的表现方式——在GTK下,它的工作方式符合你的预期。就我个人而言,我建议你保持你的应用程序现在的样子,这样和其他Windows应用程序保持一致。同时可以安装WizMouse这个工具。