class DisplayFiguresWidget(QtGui.QWidget): def __init__(self): """ """ super(DisplayFiguresWidget, self).__init__() self.init_ui() self.m_widget = None def init_ui(self): """ """ self.setWindowTitle('Test') self.setLayout(QtGui.QVBoxLayout()) self.layout_buttons = QtGui.QHBoxLayout() self.layout().addLayout(self.layout_buttons) self.layout_buttons.addStretch(1) self.status = QtGui.QLabel(self) self.layout_buttons.addWidget(self.status) self.previous_figure_button = QtGui.QPushButton("Previous") self.layout_buttons.addWidget(self.previous_figure_button) self.next_figure_button = QtGui.QPushButton("Next") self.layout_buttons.addWidget(self.next_figure_button) self.next_figure_button.clicked.connect(self.next_figure) self.previous_figure_button.clicked.connect(self.previous_figure) self.plot_canvas = None self.nav_toolbar = None self.fig_generator = None self.current_fig = None self.figures_list = [] self.i = -1 def add_figures(self, fig_generator): """ """ self.fig_generator = fig_generator self.next_figure() def add_figure(self, args): """ """ figure, title = args mess = "{} | Figure n°{}" self.status.setText(mess.format(title, self.i)) self.current_fig = figure if figure not in self.figures_list: self.figures_list.append(args) self.remove_figure() self.plot_canvas = MatplotlibWidget(figure, self) self.nav_toolbar = NavigationToolbar(self.plot_canvas, self) self.layout().insertWidget(0, self.nav_toolbar) self.layout().insertWidget(1, self.plot_canvas) def remove_figure(self): """ """ if self.plot_canvas: self.layout().removeWidget(self.plot_canvas) self.plot_canvas.deleteLater() self.plot_canvas = None if self.nav_toolbar: self.layout().removeWidget(self.nav_toolbar) self.nav_toolbar.deleteLater() self.nav_toolbar = None def next_figure(self): """ """ if self.i == -1 or self.current_fig == self.figures_list[-1][0]: self.i += 1 try: fig, title = self.fig_generator.__next__() self.add_figure((fig, title)) except StopIteration: self.status.setText("No next figure") else: self.i += 1 self.add_figure(self.figures_list[self.i]) def previous_figure(self): """ """ if self.i > 0: self.i -= 1 self.add_figure(self.figures_list[self.i]) else: self.status.setText("No previous figure")
class DisplayFiguresWidget(QtGui.QWidget): def __init__(self): """ """ super(DisplayFiguresWidget, self).__init__() self.init_ui() self.m_widget = None def init_ui(self): """ """ self.setWindowTitle('Test') self.setLayout(QtGui.QVBoxLayout()) self.layout_buttons = QtGui.QHBoxLayout() self.layout().addLayout(self.layout_buttons) self.layout_buttons.addStretch(1) self.status = QtGui.QLabel(self) self.layout_buttons.addWidget(self.status) self.previous_figure_button = QtGui.QPushButton("Previous") self.layout_buttons.addWidget(self.previous_figure_button) self.next_figure_button = QtGui.QPushButton("Next") self.layout_buttons.addWidget(self.next_figure_button) self.next_figure_button.clicked.connect(self.next_figure) self.previous_figure_button.clicked.connect(self.previous_figure) self.plot_canvas = None self.nav_toolbar = None self.fig_generator = None self.current_fig = None self.figures_list = [] self.i = -1 def add_figures(self, fig_generator): """ """ self.fig_generator = fig_generator self.next_figure() def add_figure(self, args): """ """ figure, title = args mess = "{} | Figure n°{}" self.status.setText(mess.format(title, self.i)) self.current_fig = figure if figure not in self.figures_list: self.figures_list.append(args) self.remove_figure() self.plot_canvas = MatplotlibWidget(figure, self) self.nav_toolbar = NavigationToolbar(self.plot_canvas, self) self.layout().insertWidget(0, self.nav_toolbar) self.layout().insertWidget(1, self.plot_canvas) def remove_figure(self): """ """ if self.plot_canvas: self.layout().removeWidget(self.plot_canvas) self.plot_canvas.deleteLater() self.plot_canvas = None if self.nav_toolbar: self.layout().removeWidget(self.nav_toolbar) self.nav_toolbar.deleteLater() self.nav_toolbar = None def next_figure(self): """ """ if self.i == -1 or self.current_fig == self.figures_list[-1][0]: self.i += 1 try: fig, title = self.fig_generator.__next__() self.add_figure((fig, title)) except StopIteration: self.status.setText("No next figure") else: self.i += 1 self.add_figure(self.figures_list[self.i]) def previous_figure(self): """ """ if self.i > 0: self.i -= 1 self.add_figure(self.figures_list[self.i]) else: self.status.setText("No previous figure")