def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.history_s = 20.0 self.next_color = 0 self.paused = False self.last_draw_time = 0.0 self.figure = matplotlib.figure.Figure() self.canvas = FigureCanvas(self.figure) self.canvas.mpl_connect('key_press_event', self.handle_key_press) self.canvas.mpl_connect('key_release_event', self.handle_key_release) self.left_axis = self.figure.add_subplot(111) self.left_axis.grid() self.left_axis.fmt_xdata = lambda x: '%.3f' % x self.left_axis.legend_loc = LEFT_LEGEND_LOC self.right_axis = None def draw(): # NOTE jpieper: For some reason, on the first repaint # event, the height is negative, which throws spurious # errors. Paper over that here. l, b, w, h = self.figure.bbox.bounds if h < 0: return FigureCanvas.draw(self.canvas) self.canvas.repaint() self.canvas.draw = draw self.toolbar = backend_qt4agg.NavigationToolbar2QT(self.canvas, self) self.pause_action = QtGui.QAction(u'Pause', self) self.pause_action.setCheckable(True) self.pause_action.toggled.connect(self._handle_pause) self.toolbar.addAction(self.pause_action) layout = QtGui.QVBoxLayout(self) layout.addWidget(self.toolbar, 0) layout.addWidget(self.canvas, 1) self.canvas.setFocusPolicy(QtCore.Qt.ClickFocus)
def __init__(self): super(Tplot, self).__init__() self.ui = ui_tplot_main_window.Ui_TplotMainWindow() self.ui.setupUi(self) self.figure = matplotlib.figure.Figure() self.canvas = FigureCanvas(self.figure) self.canvas.mpl_connect('motion_notify_event', self.handle_mouse) self.canvas.mpl_connect('key_press_event', self.handle_key_press) self.canvas.mpl_connect('key_release_event', self.handle_key_release) # Make QT drawing not be super slow. See: # https://github.com/matplotlib/matplotlib/issues/2559/ def draw(): FigureCanvas.draw(self.canvas) self.canvas.repaint() self.canvas.draw = draw self.left_axis = self.figure.add_subplot(111) self.left_axis.tplot_name = 'Left' self.axes = { 'Left' : self.left_axis, } layout = QtGui.QVBoxLayout(self.ui.plotFrame) layout.addWidget(self.canvas, 1) self.toolbar = backend_qt4agg.NavigationToolbar2QT(self.canvas, self) self.addToolBar(self.toolbar) self.canvas.setFocusPolicy(QtCore.Qt.ClickFocus) self.canvas.setFocus() self.log = None self.COLORS = 'rgbcmyk' self.next_color = 0 self.timer = QtCore.QTimer() self.timer.timeout.connect(self.handle_timeout) self.time_start = None self.time_end = None self.time_current = None self.ui.recordCombo.currentIndexChanged.connect( self.handle_record_combo) self.ui.addPlotButton.clicked.connect(self.handle_add_plot_button) self.ui.removeButton.clicked.connect(self.handle_remove_button) self.ui.treeWidget.itemExpanded.connect(self.handle_item_expanded) self.tree_items = [] self.ui.treeWidget.header().setResizeMode( QtGui.QHeaderView.ResizeToContents) self.ui.timeSlider.valueChanged.connect(self.handle_time_slider) self._updating_slider = BoolGuard() self.ui.fastReverseButton.clicked.connect( self.handle_fast_reverse_button) self.ui.stepBackButton.clicked.connect( self.handle_step_back_button) self.ui.playReverseButton.clicked.connect( self.handle_play_reverse_button) self.ui.stopButton.clicked.connect(self.handle_stop_button) self.ui.playButton.clicked.connect(self.handle_play_button) self.ui.stepForwardButton.clicked.connect( self.handle_step_forward_button) self.ui.fastForwardButton.clicked.connect( self.handle_fast_forward_button)