我正在开发一个包含许多窗格的应用程序。请参阅screenshot:
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())
我想仅在四个顶级窗格上应用此功能: plot , settings , events 和 data
但是,我需要为每个顶级窗格中的每个子面板或控件调用此函数以使其工作。例如,我需要将此功能单独应用于测量设置,分析参数,查看设置等面板。
EVT_ENTER_WINDOW
事件很可能不会传播到父窗口。
有没有办法在不将focusFollowsMouse
应用于每个子面板或控件的情况下让它工作?
由于
答案 0 :(得分:2)
这是Windows的行为 - 它可以像您期望的那样在GTK下工作。就个人而言,为了与其他Windows应用程序保持一致,我会保留您的应用程序,并安装WizMouse