我正在嵌入一个带有自定义NavigationToolbar2WxAgg
的图形,这样我就可以(希望)轻松控制工具栏的状态。我希望能够切换缩放和平移按钮,但我很难让它正常工作。我的工具栏代码是
class CustomNavToolbar(NavigationToolbar2WxAgg):
def __init__(self, *args, **kwargs):
NavigationToolbar2WxAgg.__init__(self, *args, **kwargs)
self.DeleteToolByPos(7) # Deletes the adjust subplots button
@property
def IsActive(self):
return self._active is not None
def DeactivateAll(self):
if self._active == 'PAN':
self.pan('off')
elif self._active == 'ZOOM':
self.zoom()
我认为我可以调用DeactivateAll()
方法来关闭当前活动的任何模式。不幸的是,这不太正常。该模式已禁用,但按钮本身保持切换状态。当我再次单击该按钮时,模式已启用,但按钮未被遮挡。
我的google-fu无法提出可行的解决方案,有人能指出我正确的方法吗?
答案 0 :(得分:1)
我会通过以编程方式按下按钮来完成此操作。
如果您查看zoom
的代码,则会有
self.ToggleTool(self.wx_ids['Pan'], False)
我假设关闭按钮,所以只需包含一个类似的行:
def DeactivateAll(self):
if self._active == 'PAN':
self.pan('off')
self.ToggleTool(self.wx_ids['Pan'], False)
elif self._active == 'ZOOM':
self.ToggleTool(self.wx_ids['Zoom'], False)
self.zoom()
我怀疑你可以让这更简单:
def DeactivateAll(self):
self.ToggleTool(self.wx_ids['Pan'], False)
self.ToggleTool(self.wx_ids['Zoom'], False)
让回叫做他们的工作。