Skip to content
4 changes: 2 additions & 2 deletions src/superqt/sliders/_labeled.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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:
Expand Down
16 changes: 16 additions & 0 deletions tests/zz_test_sliders/test_labeled_slider.py
Original file line number Diff line number Diff line change
Expand Up @@ -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"