2017-09-23 124 views
0

我有一個關於pyqtgraph實時繪圖的問題。我想讓繪圖從連續輸入中收集的每100個項目更新一次,但曲線只顯示一次,收集數據完成後。調試打印「boo」每100個項目後打印到控制檯,但updatePlot()似乎只在結束循環時調用。這是我的代碼:pyqtgraph實時繪圖

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,我還沒有得到它的竅門尚未...

回答

0

我遇到了解決方案,以防有人絆倒在一個類似的問題:

def updatePlot(self): 
    self.plt.setData(self.collectedData) 
    QtGui.QApplication.processEvents() 

添加一個調用來處理事件導致劇情更新正常!