2013-10-04 97 views
0

我正在嵌入一個帶有自定義NavigationToolbar2WxAgg的圖形,以便我可以(希望)輕鬆控制工具欄的狀態。我希望能夠切換縮放和平移按鈕,但我很難讓它正常工作。我的工具欄的代碼是在matplotlib上切換按鈕狀態以編程方式導航工具欄

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()方法來關閉當前活動的任何模式的想法。不幸的是,這並不正確。該模式被禁用,但按鈕本身保持切換。而當我再次點擊該按鈕時,該模式已啓用,但該按鈕未被剪切。

我的谷歌福不能拿出一個工作解決方案,有人可以指向我正確的方法嗎?

回答

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) 

並讓回撥做他們的工作。

+0

這樣做了,謝謝!它現在完美。 – bheklilr

+0

@bheklilr請參閱編輯。 – tacaswell

相關問題