diff --git a/hp4194/cv_qt_inteface.py b/hp4194/cv_qt_inteface.py index dd3d90980ead2e0c92c395c3231ebadb8deb97f2..81758a5018a9c231aa3515b7627a9399b6007092 100644 --- a/hp4194/cv_qt_inteface.py +++ b/hp4194/cv_qt_inteface.py @@ -16,6 +16,26 @@ class MplCanvas(FigureCanvasQTAgg): self.axes = fig.subplots(nrows=2,ncols=3) super().__init__(fig) +class Worker(Qobject): + finished = pyqtSignal() + progress = pyqtSignal(int) + + def run(): + for i in range(20): + self.xdata = list(range(20)) + for i in range(2): + for j in range(3): + self.sc.axes[i,j].cla() # Clear the canvas. + self.sc.axes[i,j].plot(self.xdata,random.sample(range(50),20)) + + # Trigger the canvas to update and redraw. + self.sc.draw_idle() + time.sleep(1) + + print("finished") + + + class MainWinow(QMainWindow): def __init__(self): super().__init__() @@ -216,20 +236,25 @@ class MainWinow(QMainWindow): def toolbar_button_clicked(self): self.widget.setEnabled(False) self.toolbar.setEnabled(False) - + + # Step 2: Create a QThread object + self.thread = QThread() + # Step 3: Create a worker object + self.worker = Worker() + # Step 4: Move worker to the thread + self.worker.moveToThread(self.thread) + # Step 5: Connect signals and slots + self.thread.started.connect(self.worker.run) + self.worker.finished.connect(self.thread.quit) + self.worker.finished.connect(self.worker.deleteLater) + self.thread.finished.connect(self.thread.deleteLater) + self.worker.progress.connect(self.reportProgress) + # Step 6: Start the thread + self.thread.start() - self.xdata = list(range(20)) - for i in range(2): - for j in range(3): - self.sc.axes[i,j].cla() # Clear the canvas. - self.sc.axes[i,j].plot(self.xdata,random.sample(range(50),20)) - - # Trigger the canvas to update and redraw. - self.sc.draw_idle() - - print("finished") - #self.widget.setEnabled(True) - #self.toolbar.setEnabled(True) + + self.widget.setEnabled(True) + self.toolbar.setEnabled(True) app= QApplication(sys.argv)