Hello everyone, I'm trying to plot live data. I manage to do it but the only problem is it's a bit laggy because I'm comunicating with devices and it takes few seconds to receive the datas. During this delay the plot (matplotlib) is not responsive, and it's a bit problematic for my application. So I'm trying to switch to a threaded soft.
How can I update my graph using a thread and do another (longer) operation at the same time? I've tried to write this simple code but it doesn't work... You will directly see that I'm a beginner :) from PyQt4 import QtCore, QtGui import time import sys import random from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure class Graph(FigureCanvas): """Matplotlib Figure widget""" def __init__(self): self.fig = Figure() self.ax = self.fig.add_subplot(111) FigureCanvas.__init__(self, self.fig) FigureCanvas.updateGeometry(self) # generates first "empty" plots self.user = [] self.l_user, = self.ax.plot([], self.user) self.fig.canvas.draw() self.get_number() def get_number(self): self.result1 = random.randint(0,4) self.user.append(self.result1) time.sleep(0.5) self.get_number() class AThread(QtCore.QThread): def run(self): time.sleep(1) plot.l_user.set_data(len(self.user), self.user) plot.fig.canvas.draw() FigureCanvas.updateGeometry(self) def usingQThread(): app = QtCore.QCoreApplication([]) qApp = QtGui.QApplication(sys.argv) plot = Graph() thread = AThread() thread.finished.connect(app.exit) thread.start() sys.exit(app.exec_()) Thanks! Fab _______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt