0

我有一个 PyQt4 应用程序,其中嵌入了 matplotlib 图形。在此处输入图像描述

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

4

1 回答 1

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)
于 2012-04-12T19:05:40.833 回答