Skip to content

Commit 4c57cfd

Browse files
committed
update
1 parent 952ac33 commit 4c57cfd

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

src/superqt/sliders/_labeled.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
import contextlib
44
from enum import IntEnum, IntFlag, auto
5-
from functools import partial
6-
from typing import Any, Iterable, overload
5+
from typing import Any, Callable, Iterable, overload
76

87
from qtpy import QtGui
98
from qtpy.QtCore import Property, QPoint, QSize, Qt, Signal
@@ -571,8 +570,13 @@ def _on_value_changed(self, v: tuple[int, ...]) -> None:
571570
lbl.deleteLater()
572571
self._handle_labels.clear()
573572
for n, val in enumerate(self._slider.value()):
574-
_cb = partial(self._slider.setSliderPosition, index=n)
575-
s = SliderLabel(self._slider, parent=self, connect=_cb)
573+
# so gross... fix me
574+
s = SliderLabel(
575+
self._slider,
576+
parent=self,
577+
connect=self._on_slider_label_edited,
578+
index=n,
579+
)
576580
s.editingFinished.connect(self.editingFinished)
577581
s.setValue(val)
578582
self._handle_labels.append(s)
@@ -581,6 +585,10 @@ def _on_value_changed(self, v: tuple[int, ...]) -> None:
581585
label.setValue(val)
582586
self._reposition_labels()
583587

588+
def _on_slider_label_edited(self, pos: float) -> None:
589+
idx = getattr(self.sender(), "_index", 0)
590+
self._slider.setSliderPosition(pos, idx)
591+
584592
def _on_range_changed(self, min: int, max: int) -> None:
585593
if (min, max) != (self._slider.minimum(), self._slider.maximum()):
586594
self._slider.setRange(min, max)
@@ -640,12 +648,14 @@ class SliderLabel(QDoubleSpinBox):
640648
def __init__(
641649
self,
642650
slider: QSlider,
643-
parent=None,
644-
alignment=Qt.AlignmentFlag.AlignCenter,
645-
connect=None,
651+
parent: QWidget | None = None,
652+
alignment: Qt.AlignmentFlag = Qt.AlignmentFlag.AlignCenter,
653+
connect: Callable | None = None,
654+
index: int = 0,
646655
) -> None:
647656
super().__init__(parent=parent)
648657
self._slider = slider
658+
self._index = index
649659
self.setFocusPolicy(Qt.FocusPolicy.ClickFocus)
650660
self.setMode(EdgeLabelMode.LabelIsValue)
651661
self.setDecimals(0)

0 commit comments

Comments
 (0)