diff --git a/src/ui/livetab.py b/src/ui/livetab.py index 3b2f47484723779fa189100295796fc000b2334d..3d9b755c135f7dc34225aa1192da67ec25812046 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