From f4c086ab83813982fb69d0209f233bd7366a0444 Mon Sep 17 00:00:00 2001
From: esarrey <eliott.sarrey@gmail.com>
Date: Fri, 9 Jun 2023 14:34:22 +0200
Subject: [PATCH] QtCore unfreeze interface

---
 src/ui/livetab.py | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/ui/livetab.py b/src/ui/livetab.py
index 3b2f474..3d9b755 100644
--- a/src/ui/livetab.py
+++ b/src/ui/livetab.py
@@ -4,14 +4,13 @@ from pymeasure.display.widgets import TabWidget
 from ..classes.hall_sensor import HallSensor
 
 class LiveTab(TabWidget, QtWidgets.QWidget):
-
     def __init__(self, name, parent=None):
         super().__init__(parent)
         self.name = name
         self.hall_sensor = HallSensor()
 
         font = QtGui.QFont()
-        font.setPointSize(48)
+        font.setPointSize(32)
 
         layout = QtWidgets.QGridLayout()
 
@@ -27,14 +26,29 @@ class LiveTab(TabWidget, QtWidgets.QWidget):
 
         self.sensor_timer = QtCore.QTimer()
         self.sensor_timer.timeout.connect(self.update_sensor_value)
-        self.sensor_timer.start(500)
-
+        self.sensor_timer.start(100)  # Refresh every 0.1 seconds
 
     def update_sensor_value(self):
-        sensor_value = self.hall_sensor.read_mT()
-        self.sensor_value_label.setText(f"{sensor_value:.6f}mT")
+        # Create a worker thread for reading the sensor value
+        worker = SensorWorker(self.hall_sensor)
+        worker.sensor_value_updated.connect(self.update_sensor_label)
+        QtCore.QThreadPool.globalInstance().start(worker)
+
+    def update_sensor_label(self, sensor_value):
+        self.sensor_value_label.setText(str(sensor_value) + "mT")
 
     def zero_sensor_value(self):
         self.sensor_timer.stop()
         self.hall_sensor.zeroing()
         self.sensor_timer.start(100)
+
+class SensorWorker(QtCore.QRunnable):
+    sensor_value_updated = QtCore.pyqtSignal(float)
+
+    def __init__(self, hall_sensor):
+        super().__init__()
+        self.hall_sensor = hall_sensor
+
+    def run(self):
+        sensor_value = self.hall_sensor.read_mT()
+        self.sensor_value_updated.emit(sensor_value)
\ No newline at end of file
-- 
GitLab