class PulseWindow(QMainWindow, Form): def __init__(self): Form.__init__(self) QMainWindow.__init__(self) self.setupUi(self) self.fig = Figure(frameon=False) self.ax1 = self.fig.add_axes([0.05, 0.55, 0.9, 0.4]) self.ax2 = self.fig.add_axes([0.05, 0.05, 0.9, 0.45]) self.ax1.set_facecolor('white') self.x = np.linspace(0, 10, 2000) self.line1, = self.ax1.plot(self.x, np.zeros(2000), linewidth=1.5, color='red') self.line2, = self.ax2.plot(self.x, np.zeros(2000), linewidth=1.5, color='blue') self.ax1.set_ylim([-1, 7]) self.ax1.set_xlim([0, 10]) self.ax2.set_ylim([-1, 7]) self.ax2.set_xlim([0, 10]) self.ax1.grid(True) self.ax2.grid(True) self.canvas = FigureCanvas(self.fig) self.navi = NavigationToolbar(self.canvas, self) self.status = True self.gridflag = True self.bkclrbox = ['white', 'yellow', 'cyan', 'black'] self.linclrbox = [ 'white', 'yellow', 'cyan', 'black', 'red', 'green', 'brown' ] self.gridlinclrbox = [ 'white', 'yellow', 'cyan', 'black', 'red', 'green', 'brown' ] self.height = 0 self.ax_bkclr = 0 self.ax_hight = 0 self.ax_length = 0 self.ax_linclr = 4 self.ax_gridlinclr = 0 l = QVBoxLayout(self.matplotlib_widget) l.addWidget(self.canvas) l.addWidget(self.navi) self.start_pushButton.clicked.connect(self.start) self.timeSlider.sliderMoved.connect(self.time1) self.timeSlider2.sliderMoved.connect(self.time2) self.voltSlider.sliderMoved.connect(self.volt1) self.voltSlider2.sliderMoved.connect(self.volt2) self.bkgndclr_pushButton.clicked.connect(self.bkgndclr_change) self.gridlinescolor_pushButton.clicked.connect(self.gridlinclr_change) self.SaveFig_pushButton.clicked.connect(self.SaveFig) self.SerialUpdate = serialupdate() self.SerialUpdate.update_trigger.connect(self.update_plot) self.SerialUpdate.start() def start(self): self.status = not self.status if self.status == False: self.start_pushButton.setText('Start') self.SerialUpdate.stop() else: self.start_pushButton.setText('Hold') self.SerialUpdate.start() def volt1(self): self.height = self.height + 1 if self.height == 2: self.ax1.set_ylim([-1, 3]) self.fig.canvas.draw() elif self.height == 3: self.height = 0 self.ax1.set_ylim([-1, 8]) self.fig.canvas.draw() elif self.height == 1: self.ax1.set_ylim([-1, 5]) self.fig.canvas.draw() def time1(self): if self.ax_length == 0: self.ax_length = 1 self.ax1.set_xlim([4, 8]) self.fig.canvas.draw() elif self.ax_length == 1: self.ax_length = 2 self.ax1.set_xlim([6, 8]) self.fig.canvas.draw() elif self.ax_length == 2: self.ax_length = 3 self.ax1.set_xlim([7, 8]) self.fig.canvas.draw() else: self.ax_length = 0 self.ax1.set_xlim([0, 8]) self.fig.canvas.draw() def volt2(self): self.height = self.height + 1 if self.height == 2: self.ax2.set_ylim([-1, 3]) self.fig.canvas.draw() elif self.height == 3: self.height = 0 self.ax2.set_ylim([-1, 8]) self.fig.canvas.draw() elif self.height == 1: self.ax2.set_ylim([-1, 5]) self.fig.canvas.draw() def time2(self): if self.ax_length == 0: self.ax_length = 1 self.ax2.set_xlim([4, 8]) self.fig.canvas.draw() elif self.ax_length == 1: self.ax_length = 2 self.ax2.set_xlim([6, 8]) self.fig.canvas.draw() elif self.ax_length == 2: self.ax_length = 3 self.ax2.set_xlim([7, 8]) else: self.ax_length = 0 self.ax1.set_xlim([0, 8]) self.fig.canvas.draw() def bkgndclr_change(self): self.ax_bkclr += 1 if self.ax_bkclr == 4: self.ax_bkclr = 0 while self.ax_bkclr == self.ax_linclr or ( self.ax_bkclr == self.ax_gridlinclr and self.gridflag == True): self.ax_bkclr += 1 if self.ax_bkclr == 4: self.ax_bkclr = 0 self.ax1.set_axis_bgcolor(self.bkclrbox[self.ax_bkclr]) self.ax2.set_axis_bgcolor(self.bkclrbox[self.ax_bkclr]) self.fig.canvas.draw() def gridlinclr_change(self): self.ax_gridlinclr += 1 if self.ax_gridlinclr == 7: self.ax_gridlinclr = 0 if self.ax_gridlinclr == self.ax_bkclr: self.ax_gridlinclr += 1 for xgridlin in self.ax1.xaxis.get_gridlines(): xgridlin.set_color(self.gridlinclrbox[self.ax_gridlinclr]) for ygridlin in self.ax1.yaxis.get_gridlines(): ygridlin.set_color(self.gridlinclrbox[self.ax_gridlinclr]) for xtick in self.ax1.xaxis.get_ticklines(): xtick.set_color(self.gridlinclrbox[self.ax_gridlinclr]) for ytick in self.ax1.yaxis.get_ticklines(): ytick.set_color(self.gridlinclrbox[self.ax_gridlinclr]) self.fig.canvas.draw() def update_plot(self, y1, y2): try: self.line1.set_ydata(y1) self.line2.set_ydata(y2) self.fig.canvas.draw() except: pass def SaveFig(self): self.fig.save("ppg.pdf") pass