from PyQt4 import QtCore, QtGui import pyqtgraph as pg import random import serial from collections import deque import sys import os ser = serial.Serial("COM3", 115200) def updateBPM(bpm): newString = ("HR:\n" + bpm) with open(os.path.join(os.path.dirname(__file__), "currentBPM.txt"), "w+") as bpmFile: bpmFile.write(newString) class MainWindow(QtGui.QMainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.central_widget = QtGui.QStackedWidget() self.setCentralWidget(self.central_widget) self.login_widget = LoginWidget(self) self.login_widget.button.clicked.connect(self.plotter) self.central_widget.addWidget(self.login_widget) def plotter(self): self.data = deque(maxlen=450) self.curve = self.login_widget.plot.getPlotItem().plot() self.timer = QtCore.QTimer() self.timer.timeout.connect(self.updater) self.timer.start(0) def updater(self): while (ser.inWaiting()==0): pass try: data = str(ser.readline()).split(",") bpm = data[0][2:] cl = int(float(data[2][:-5])) except: return updateBPM(bpm) self.data.append(cl) self.curve.setData(self.data) class LoginWidget(QtGui.QWidget): def __init__(self, parent=None): super(LoginWidget, self).__init__(parent) layout = QtGui.QHBoxLayout() self.button = QtGui.QPushButton('Start Plotting') layout.addWidget(self.button) self.plot = pg.PlotWidget() layout.addWidget(self.plot) self.setLayout(layout) if __name__ == '__main__': app = QtGui.QApplication([]) window = MainWindow() window.resize(1083,334) window.show() app.exec_()