2010-12-01 48 views
1

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

回答

3

如果一个wx.Panel有任何可以接受焦点的子部件,他们会将焦点设置为可以接受焦点的第一个子部件。这意味着wx.Panels通常不会被关注,除非您明确设置它...

如果您需要捕获面板上的单击,然后将wx.EVT_LEFT_DOWN事件绑定到面板,如下所示:

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

我认为你可以使用的HitTest找出你点击了什么,如果这甚至是必要的。哎呀,你也许可以找出它是哪个面板通过在事件处理程序做这样的事情:

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

希望帮助!

+0

嗨迈克尔..不幸的是,dowesnt工作。说我有panelone,paneltwo,panelthree都在我的主要basepanel。如果我绑定到基本面板,并按照你说的那样做,它只会在基本面板上自己点击。即使这个panelone是一个basepanel点击它的孩子没有做任何事情,因为我认为我将不得不绑定到panelone,paneltwo,panelthree等单独..任何想法?哦,并绑定到每个儿童面板不是一个选项。我需要以某种方式通过点击访问面板 – James 2010-12-03 11:27:39