wxpython将鼠标事件绑定到所有面板?

时间:2010-12-01 23:26:27

标签: wxpython

嘿所有 我正在寻找一种方法将鼠标事件绑定到所有面板。我基本上使用wx.Window.FindFocus()来查找哪个面板在我的应用程序中有多个面板。问题是我想将wx.LEFT_DOWN事件绑定到某个东西然后将wx.Window.FindFocus()放在事件处理程序中。该怎么绑? self,panel1,panel2显然不会工作因为它只会在点击该面板时调用该事件。我需要一些东西来捕捉任何面板中的点击,以便我可以确定哪个面板具有焦点?请帮助!!!

1 个答案:

答案 0 :(得分:3)

如果wx.Panel有任何可以接受焦点的子窗口小部件,它们会将焦点设置为可以接受焦点的第一个子节点。这意味着wx.Panel通常不会获得焦点,除非你明确地设置它......

如果您需要捕获面板上的点击次数,请将wx.EVT_LEFT_DOWN事件绑定到面板,如下所示:

panelOne.Bind(wx.EVT_LEFT_DOWN,self.doSomething)

我认为您可以使用HitTest来确定您点击的内容,如果有必要的话。哎呀,你可以通过在事件处理程序中做这样的事情找出它是哪个面板:

panel = event.GetEventObject()
panel_id = panel.GetId()
panel_name = panel.GetName()

希望有所帮助!