【发布时间】:2023-03-14 17:34:01
【问题描述】:
我的应用程序动态创建工具栏工具,因此只有一个鼠标事件处理程序分配给用户可能用鼠标单击的任何工具。有没有办法获取用户点击的工具或工具对象的引用索引?
工具栏是这样创建的,
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”对象没有“绑定”属性
但一定有更好的方法吗?
【问题讨论】: