2012-04-04 21 views
0

Matplotlibの図形が埋め込まれたPyQt4アプリケーションがあります。 enter image description herematplotlib.backends.backend_qt4agg.NavigationToolbar2QTAggで知られている情報にアクセスする方法

ご覧のとおり、ナビゲーションツールバーをウィジェットとして追加しました。私は、左側のプロットに表示されたデータに基づいて右側のプロットを更新できるようにしたいと考えています。最も簡単な方法は、「ズーム」が何であっても、情報をハイジャックすることです。または、ズームが発生したときに少なくとも知っているので、右に再計算して再描画することができます。誰でもこれには良いアプローチがあります(pick_eventレベルからの再実装は最後の手段でしょう)。

答えて

1

私が思いついた最善の方法は、NavigationToolbarを親としてカスタムナビゲーションツールバーを作成することです。次に、カスタムバージョンに信号を追加し、描画メソッドをオーバーライドしました。このようにして、元の描画メソッドを呼び出し、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) 
関連する問題