2010-12-01 47 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