Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
wxpython是否将鼠标事件绑定到所有面板?_Wxpython - Fatal编程技术网

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

wxpython是否将鼠标事件绑定到所有面板?,wxpython,Wxpython,大家好 我正在寻找一种将鼠标事件绑定到所有面板的方法。基本上,我使用wx.Window.FindFocus()来查找在我的应用程序中有许多面板的哪个面板具有焦点。问题是我想将wx.LEFT_DOWN事件绑定到某个对象,然后将wx.Window.FindFocus()放入事件处理程序中。要绑定到什么?self、panel1、panel2显然不起作用,因为它只在单击该面板时调用事件。我需要一些东西来捕捉任何面板中的点击,以便确定哪个面板具有焦点?请帮忙 如果wx.Panel有任何可以接受焦点的子窗口

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

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

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

panelOne.Bind(wx.EVT_左下,自我剂量测量)

我想如果有必要的话,你可以使用HitTest来确定你点击了什么。见鬼,通过在事件处理程序中执行类似操作,您可能会发现它是哪个面板:

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

希望有帮助

嗨,迈克。。不幸的是,这不管用。假设我的主基板上有面板一、面板二、面板三。若我绑定到基板并按照你们说的去做,它只会点击基板本身。即使panelone是basepanel的孩子,单击它也不会做任何事情,因为我想我必须分别绑定到panelone、PanelII、panelthree等。。有什么想法吗?哦,绑定到每个子面板不是一个选项。我需要通过点击面板来访问它。它解决了我的问题@MikeDriscoll,所以非常感谢:-)