diff --git a/src/ui/livetab.py b/src/ui/livetab.py index 3d9b755c135f7dc34225aa1192da67ec25812046..0dd48ca0a81f7b4b6207c053bfe2f3823075874e 100644 --- a/src/ui/livetab.py +++ b/src/ui/livetab.py @@ -28,11 +28,24 @@ class LiveTab(TabWidget, QtWidgets.QWidget): self.sensor_timer.timeout.connect(self.update_sensor_value) self.sensor_timer.start(100) # Refresh every 0.1 seconds + self.thread_pool = QtCore.QThreadPool() + + self.tabBarClicked.connect(self.tab_activated) + self.tabBarDoubleClicked.connect(self.tab_activated) + + def tab_activated(self, index): + if index == self.currentIndex(): + self.sensor_timer.start(100) # Start updating sensor value + else: + self.sensor_timer.stop() # Stop updating sensor value + def update_sensor_value(self): - # Create a worker thread for reading the sensor value + # Create a worker object for reading the sensor value worker = SensorWorker(self.hall_sensor) worker.sensor_value_updated.connect(self.update_sensor_label) - QtCore.QThreadPool.globalInstance().start(worker) + + # Move the worker object to the thread pool and start the thread + self.thread_pool.start(worker) def update_sensor_label(self, sensor_value): self.sensor_value_label.setText(str(sensor_value) + "mT") @@ -42,13 +55,14 @@ class LiveTab(TabWidget, QtWidgets.QWidget): self.hall_sensor.zeroing() self.sensor_timer.start(100) -class SensorWorker(QtCore.QRunnable): +class SensorWorker(QtCore.QObject): sensor_value_updated = QtCore.pyqtSignal(float) def __init__(self, hall_sensor): super().__init__() self.hall_sensor = hall_sensor + @QtCore.pyqtSlot() def run(self): sensor_value = self.hall_sensor.read_mT() - self.sensor_value_updated.emit(sensor_value) \ No newline at end of file + self.sensor_value_updated.emit(sensor_value)