diff --git a/src/superqt/sliders/_labeled.py b/src/superqt/sliders/_labeled.py index afd3f563..048eeeca 100644 --- a/src/superqt/sliders/_labeled.py +++ b/src/superqt/sliders/_labeled.py @@ -677,8 +677,7 @@ def __init__( self._decimals = -1 self.setFocusPolicy(Qt.FocusPolicy.ClickFocus) self.setMode(EdgeLabelMode.LabelIsValue) - self.setDecimals(0) - self.setText(str(self._value)) + self.setDecimals(0) # calls updateText validator = QDoubleValidator(self) validator.setNotation(QDoubleValidator.Notation.ScientificNotation) self.setValidator(validator) @@ -713,6 +712,7 @@ def setRange(self, min_: float, max_: float) -> None: def setDecimals(self, prec: int) -> None: # super().setDecimals(prec) self._decimals = prec + self.updateText() self._update_size() def decimals(self) -> int: diff --git a/tests/zz_test_sliders/test_labeled_slider.py b/tests/zz_test_sliders/test_labeled_slider.py index 2a86bfe8..cf1be85a 100644 --- a/tests/zz_test_sliders/test_labeled_slider.py +++ b/tests/zz_test_sliders/test_labeled_slider.py @@ -84,3 +84,19 @@ def test_editing_float(qtbot): slider._label.setValue(0.5) slider._label.editingFinished.emit() assert slider.value() == 0.5 + + +def test_slider_label_decimals_update_text(qtbot): + slider = QLabeledDoubleSlider() + qtbot.addWidget(slider) + + # Set a value with default 2 decimals + slider.setValue(3.14159) + assert slider.value() == 3.14159 + assert slider._label.text() == "3.14" + + slider.setDecimals(0) + assert slider._label.text() == "3" + + slider.setDecimals(4) + assert slider._label.text() == "3.1416"