在wxPython中关注跟随鼠标?

时间:2010-09-24 09:55:00

标签: python wxpython wxwidgets

我正在开发一个包含许多窗格的应用程序。请参阅screenshot

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应用于每个子面板或控件的情况下让它工作?

由于

1 个答案:

答案 0 :(得分:2)

这是Windows的行为 - 它可以像您期望的那样在GTK下工作。就个人而言,为了与其他Windows应用程序保持一致,我会保留您的应用程序,并安装WizMouse