来自鼠标事件的WxPython工具栏工具引用

来自鼠标事件的WxPython工具栏工具引用,wxpython,toolbar,Wxpython,Toolbar,我的应用程序动态创建工具栏工具,因此只有一个鼠标事件处理程序分配给用户可能单击的任何工具。是否有方法获取用户单击的工具或工具对象的引用索引 工具栏是这样创建的 self.m_toolBar = wx.ToolBar( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TB_HORIZONTAL ) self.m_toolBar.Bind( wx.EVT_LEFT_DOWN, self.onToolBar ) self.m_toolB

我的应用程序动态创建工具栏工具,因此只有一个鼠标事件处理程序分配给用户可能单击的任何工具。是否有方法获取用户单击的工具或工具对象的引用索引

工具栏是这样创建的

self.m_toolBar = wx.ToolBar( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TB_HORIZONTAL )
self.m_toolBar.Bind( wx.EVT_LEFT_DOWN, self.onToolBar )
self.m_toolBar.AddTool(wx.NewId(), "foo", wx.Bitmap(path), "bar")
像这样添加了新工具

self.m_toolBar = wx.ToolBar( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TB_HORIZONTAL )
self.m_toolBar.Bind( wx.EVT_LEFT_DOWN, self.onToolBar )
self.m_toolBar.AddTool(wx.NewId(), "foo", wx.Bitmap(path), "bar")
事件处理程序onToolBar,我可以得到原始工具栏对象self.m_toolbar

event.GetEventObject()
但是我找不到任何关于用户选择的实际工具的参考。event.GetId()总是返回wx.ToolBar的ID,而不是我搜索的ToolBarBase对象

选项

1) 我注意到我可以得到鼠标的(x,y)位置,我可以根据工具图标的大小计算出按下了哪个工具(索引),等等,但这感觉不是正确的方法。 2) 我想我可以创建多个wx.ToolBar对象,并在每个对象中只放置一个工具,因此event.GetId()将直接与所选的工具相关

3) 我试过的另一个选择是

    obj = self.m_toolBar.AddTool(wx.NewId(), status_tip, wx.Bitmap(path), tooltip)
    obj.Bind(wx.EVT_LEFT_DOWN, self.onToolBarObj)
但是“ToolBarToolBase”对象没有属性“Bind”


但一定有更好的方法吗?

因此,核心问题不是为添加的工具使用正确的绑定方法,而是

obj = self.m_toolBar.AddTool(wx.NewId(), status_tip, wx.Bitmap(path), tooltip)
obj.Bind(wx.EVT_LEFT_DOWN, self.onToolBarObj)
应该是,

obj = self.m_toolBar.AddTool(wx.NewId(), status_tip, wx.Bitmap(path), tooltip)
self.Bind(wx.EVT_MENU, self.onToolBarObj, obj)

在大多数情况下,工具栏和菜单栏事件都是针对框架对象绑定的,我想这就是
self
在这里所指的。