0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 11:41:49 +02:00

feat(widget_io): added handler for Sliders

This commit is contained in:
2025-03-20 15:19:28 +01:00
parent fb8f4ea557
commit 0a64e47016

View File

@ -1,4 +1,6 @@
# pylint: disable=no-name-in-module # pylint: disable=no-name-in-module
from __future__ import annotations
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from qtpy.QtWidgets import ( from qtpy.QtWidgets import (
@ -8,6 +10,7 @@ from qtpy.QtWidgets import (
QDoubleSpinBox, QDoubleSpinBox,
QLabel, QLabel,
QLineEdit, QLineEdit,
QSlider,
QSpinBox, QSpinBox,
QTableWidget, QTableWidget,
QTableWidgetItem, QTableWidgetItem,
@ -104,10 +107,10 @@ class TableWidgetHandler(WidgetHandler):
class SpinBoxHandler(WidgetHandler): class SpinBoxHandler(WidgetHandler):
"""Handler for QSpinBox and QDoubleSpinBox widgets.""" """Handler for QSpinBox and QDoubleSpinBox widgets."""
def get_value(self, widget, **kwargs): def get_value(self, widget: QSpinBox | QDoubleSpinBox, **kwargs):
return widget.value() return widget.value()
def set_value(self, widget, value): def set_value(self, widget: QSpinBox | QDoubleSpinBox, value):
widget.setValue(value) widget.setValue(value)
def connect_change_signal(self, widget: QSpinBox | QDoubleSpinBox, slot): def connect_change_signal(self, widget: QSpinBox | QDoubleSpinBox, slot):
@ -117,23 +120,36 @@ class SpinBoxHandler(WidgetHandler):
class CheckBoxHandler(WidgetHandler): class CheckBoxHandler(WidgetHandler):
"""Handler for QCheckBox widgets.""" """Handler for QCheckBox widgets."""
def get_value(self, widget, **kwargs): def get_value(self, widget: QCheckBox, **kwargs):
return widget.isChecked() return widget.isChecked()
def set_value(self, widget, value): def set_value(self, widget: QCheckBox, value):
widget.setChecked(value) widget.setChecked(value)
def connect_change_signal(self, widget: QCheckBox, slot): def connect_change_signal(self, widget: QCheckBox, slot):
widget.toggled.connect(lambda val, w=widget: slot(w, val)) widget.toggled.connect(lambda val, w=widget: slot(w, val))
class SlideHandler(WidgetHandler):
"""Handler for QCheckBox widgets."""
def get_value(self, widget: QSlider, **kwargs):
return widget.value()
def set_value(self, widget: QSlider, value):
widget.setValue(value)
def connect_change_signal(self, widget: QSlider, slot):
widget.valueChanged.connect(lambda val, w=widget: slot(w, val))
class ToggleSwitchHandler(WidgetHandler): class ToggleSwitchHandler(WidgetHandler):
"""Handler for ToggleSwitch widgets.""" """Handler for ToggleSwitch widgets."""
def get_value(self, widget, **kwargs): def get_value(self, widget: ToggleSwitch, **kwargs):
return widget.checked return widget.checked
def set_value(self, widget, value): def set_value(self, widget: ToggleSwitch, value):
widget.checked = value widget.checked = value
def connect_change_signal(self, widget: ToggleSwitch, slot): def connect_change_signal(self, widget: ToggleSwitch, slot):
@ -143,7 +159,7 @@ class ToggleSwitchHandler(WidgetHandler):
class LabelHandler(WidgetHandler): class LabelHandler(WidgetHandler):
"""Handler for QLabel widgets.""" """Handler for QLabel widgets."""
def get_value(self, widget, **kwargs): def get_value(self, widget: QLabel, **kwargs):
return widget.text() return widget.text()
def set_value(self, widget: QLabel, value): def set_value(self, widget: QLabel, value):
@ -165,6 +181,7 @@ class WidgetIO:
QCheckBox: CheckBoxHandler, QCheckBox: CheckBoxHandler,
QLabel: LabelHandler, QLabel: LabelHandler,
ToggleSwitch: ToggleSwitchHandler, ToggleSwitch: ToggleSwitchHandler,
QSlider: SlideHandler,
} }
@staticmethod @staticmethod