Hello everyone, I'm trying to plot live datas using matplotlib and PyQt. I need a multithreaded program beacause I use time.sleep and it freeze completely the app during that moment. I've tried that but it crash immediatly:
from PyQt4 import QtCore, QtGui import time import sys from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar from matplotlib.figure import Figure # Subclassing QThread # http://doc.qt.nokia.com/latest/qthread.html class Graph(FigureCanvas): def __init__(self,parent): self.fig = Figure() self.ax = self.fig.add_subplot(111) FigureCanvas.__init__(self, self.fig) self.R1 = [] self.l_R1, = self.ax.plot([], self.R1,"-o") self.fig.canvas.draw() FigureCanvas.updateGeometry(self) class ApplicationWindow(QtGui.QMainWindow): """Example main window""" def __init__(self): QtGui.QMainWindow.__init__(self) self.main_widget = QtGui.QWidget(self) vbl = QtGui.QGridLayout(self.main_widget) qmc = Graph(self.main_widget) vbl.addWidget(qmc,0,0,1,11) self.setCentralWidget(self.main_widget) class AThread(QtCore.QThread): def run(self): count = 0 while count < 5: time.sleep(1) print "Increasing" count += 1 aw.l_R1.set_data(count, count) def usingQThread(): app = QtCore.QCoreApplication([]) thread = AThread() thread.finished.connect(app.exit) thread.start() sys.exit(app.exec_()) if __name__ == "__main__": # qApp = QtGui.QApplication(sys.argv) aw = ApplicationWindow() aw.showMaximized() usingQThread() sys.exit(qApp.exec_()) Could you explain me why? The aim is to use one thread to acquire the data and another to refresh the graph. Thanks! Fabien
_______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt