如何访问matplotlib.backends.backend_qt4agg.NavigationToolbar2QTAgg已知的信息

时间:2012-04-04 16:18:18

标签: python qt4 matplotlib

我有一个带有嵌入式matplotlib数字的PyQt4应用程序。enter image description here

如您所见,我已将导航工具栏添加为小部件。我希望能够根据左侧图表上显示的数据更新右侧的图表。似乎最简单的方法是劫持“缩放”中包含的信息。或者至少知道缩放何时发生,这样我就可以在右边重新计算并重绘。任何人都有一个很好的方法(从pick_event级别重新实现将是最后的手段)?

1 个答案:

答案 0 :(得分: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)