使用 pyqtgraph 的实时绘图
Realtime plot with pyqtgraph
我对使用 pyqtgraph 进行实时绘图有疑问。我希望情节每从串行输入中收集 100 个项目就更新一次,但曲线只显示一次,在收集数据完成后。调试 print "boo" 在每 100 个项目后打印到控制台,但 updatePlot()
似乎仅在结束循环时被调用。这是我的代码:
class EKG(QtGui.QMainWindow, out.Ui_MainWindow):
def __init__(self):
super(self.__class__, self).__init__()
self.setupUi(self)
self.collectedData = []
self.dataPlot.showGrid(x=True, y=True, alpha=0.6)
self.plt = self.dataPlot.plot(pen='m', antialias=True)
self.port = "COM9"
self.actionZako_cz.triggered.connect(self.close_window)
self.startBtn.clicked.connect(self.collectData)
def getTime(self):
return int(self.timeBox.toPlainText())
def updatePlot(self):
self.plt.setData(self.collectedData)
def collectData(self, howLong):
howLong = self.getTime()
self.collectedData = []
serialData = serial.Serial(self.port, 57600)
t_end = time.time() + howLong
while time.time() < t_end:
try:
self.collectedData.append(int(serialData.readline().strip()))
except ValueError:
pass
if len(self.collectedData) % 100 == 0:
print "boo"
self.updatePlot()
serialData.close()
如有任何建议,我将不胜感激;这是我第一次使用 pyqtgraph,我还没有掌握它的窍门...
我已经找到了解决方案,以防万一有人遇到类似问题:
def updatePlot(self):
self.plt.setData(self.collectedData)
QtGui.QApplication.processEvents()
添加对处理事件的调用会导致绘图正确更新!
我对使用 pyqtgraph 进行实时绘图有疑问。我希望情节每从串行输入中收集 100 个项目就更新一次,但曲线只显示一次,在收集数据完成后。调试 print "boo" 在每 100 个项目后打印到控制台,但 updatePlot()
似乎仅在结束循环时被调用。这是我的代码:
class EKG(QtGui.QMainWindow, out.Ui_MainWindow):
def __init__(self):
super(self.__class__, self).__init__()
self.setupUi(self)
self.collectedData = []
self.dataPlot.showGrid(x=True, y=True, alpha=0.6)
self.plt = self.dataPlot.plot(pen='m', antialias=True)
self.port = "COM9"
self.actionZako_cz.triggered.connect(self.close_window)
self.startBtn.clicked.connect(self.collectData)
def getTime(self):
return int(self.timeBox.toPlainText())
def updatePlot(self):
self.plt.setData(self.collectedData)
def collectData(self, howLong):
howLong = self.getTime()
self.collectedData = []
serialData = serial.Serial(self.port, 57600)
t_end = time.time() + howLong
while time.time() < t_end:
try:
self.collectedData.append(int(serialData.readline().strip()))
except ValueError:
pass
if len(self.collectedData) % 100 == 0:
print "boo"
self.updatePlot()
serialData.close()
如有任何建议,我将不胜感激;这是我第一次使用 pyqtgraph,我还没有掌握它的窍门...
我已经找到了解决方案,以防万一有人遇到类似问题:
def updatePlot(self):
self.plt.setData(self.collectedData)
QtGui.QApplication.processEvents()
添加对处理事件的调用会导致绘图正确更新!