2012-04-04 1 views
0

У меня есть приложение PyQt4 со встроенными фигурами matplotlib. enter image description hereКак получить доступ к информации, известной по matplotlib.backends.backend_qt4agg.NavigationToolbar2QTAgg

Как вы видите, я добавил панель навигации в качестве виджета. Я хотел бы иметь возможность обновить график справа на основе данных, отображаемых на графике слева. Кажется, самым простым способом было бы захватить информацию, содержащуюся в том, что делает «масштабирование». Или, по крайней мере, знать, когда произошло увеличение, поэтому я могу пересчитать и перерисовать справа. У кого-то есть хороший подход к этому (повторное внедрение с уровня pick_event было бы последним средством)?

ответ

1

Лучший способ, с которым я столкнулся, - создать пользовательскую панель навигации с NavigationToolbar в качестве родителя. Затем я просто добавил сигнал к пользовательской версии и переопределил метод draw. Таким образом, я мог бы вызвать оригинальный метод draw и испустить свой сигнал с любой информацией, необходимой мне из структуры данных NavigationToolbar.

class NavigationToolbarCustom(NavigationToolbar): 
zoom_changed = pyqtSignal(float, float, name='zoomChanged') 
def __init__(self, canvas, parent): 
    NavigationToolbar.__init__(self, canvas, parent) 
    #super(NavigationToolbarCustom, self).__init__(self, canvas, parent) 
def draw(self): 
    super(NavigationToolbarCustom,self).draw() 
    if self._xypress == None: 
     home_view = self._views.home() 
     Xmin,Xmax = home_view[0][0:2] 
    else: 
     lastx, lasty, a, ind, lim, trans = self._xypress[0] 
     Xmin,Xmax=a.get_xlim() 
    self.zoom_changed.emit(Xmin,Xmax) 
Смежные вопросы