diff --git a/hp4194/cv_qt_inteface.py b/hp4194/cv_qt_inteface.py index 81758a5018a9c231aa3515b7627a9399b6007092..7cdd6fe06e3d979835e3667ef56b792be7d8a69b 100644 --- a/hp4194/cv_qt_inteface.py +++ b/hp4194/cv_qt_inteface.py @@ -8,6 +8,7 @@ from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg from matplotlib.figure import Figure import random from PyQt6.QtGui import QAction +from PyQt6.QtCore import * import time class MplCanvas(FigureCanvasQTAgg): @@ -16,24 +17,30 @@ class MplCanvas(FigureCanvasQTAgg): self.axes = fig.subplots(nrows=2,ncols=3) super().__init__(fig) -class Worker(Qobject): - finished = pyqtSignal() - progress = pyqtSignal(int) +class Worker(QRunnable): + def __init__(self, window): + super().__init__() + self.window = window + - def run(): + @pyqtSlot() + def run(self): + self.window.widget.setEnabled(False) + self.window.toolbar.setEnabled(False) for i in range(20): - self.xdata = list(range(20)) + self.window.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)) + self.window.sc.axes[i,j].cla() # Clear the canvas. + self.window.sc.axes[i,j].plot(self.window.xdata,random.sample(range(50),20)) # Trigger the canvas to update and redraw. - self.sc.draw_idle() + self.window.sc.draw_idle() time.sleep(1) + self.window.widget.setEnabled(True) + self.window.toolbar.setEnabled(True) + self.data = 1 - print("finished") - class MainWinow(QMainWindow): @@ -233,28 +240,14 @@ class MainWinow(QMainWindow): self.setCentralWidget(self.widget) self.showMaximized() - 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.threadpool = QThreadPool() + print("Multithreading with maximum %d threads" % self.threadpool.maxThreadCount()) - - self.widget.setEnabled(True) - self.toolbar.setEnabled(True) + def toolbar_button_clicked(self): + self.worker = Worker(self) + self.threadpool.start(self.worker) + + app= QApplication(sys.argv)