2013-10-04 4 views
0

Я внедряю фигуру с настраиваемым NavigationToolbar2WxAgg, чтобы я мог (надеюсь) легко управлять состоянием панели инструментов. Я хотел бы иметь возможность переключаться с кнопками масштабирования и панорамирования, но у меня возникают трудности с тем, чтобы он работал правильно. Мой код для панели инструментов являетсяСостояние кнопки переключения на matplotlib NavigationToolbar программно

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 не могло найти рабочего решения, может ли кто-нибудь указать мне на правильный метод?

ответ

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

Смежные вопросы