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)