2012-04-04 2 views
0

matplotlib 수치가 포함 된 PyQt4 애플리케이션이 있습니다. enter image description herematplotlib.backends.backend_qt4agg.NavigationToolbar2QTAgg가 알고있는 정보에 액세스하는 방법

위와 같이 탐색 도구 모음을 위젯으로 추가했습니다. 왼쪽의 플롯에 표시된 데이터를 기반으로 오른쪽 그림을 업데이트 할 수 있기를 원합니다. 가장 쉬운 방법은 "확대/축소"가 무엇이든지 포함 된 정보를 납치하는 것입니다. 또는 적어도 확대/축소가 발생했을 때 알 수 있으므로 오른쪽에서 다시 계산하고 다시 그릴 수 있습니다. 누구나이 좋은 접근 방식을 가지고 있습니다 (pick_event 수준에서 다시 구현하는 것이 최후의 수단이 될 수 있습니다)?

답변

1

NavigationToolbar를 부모로 사용하여 사용자 지정 탐색 도구 모음을 만드는 것이 가장 좋은 방법입니다. 그런 다음 사용자 정의 버전에 신호를 추가하고 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) 
관련 문제