2
2
3
3
import contextlib
4
4
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
7
6
8
7
from qtpy import QtGui
9
8
from qtpy .QtCore import Property , QPoint , QSize , Qt , Signal
@@ -571,8 +570,13 @@ def _on_value_changed(self, v: tuple[int, ...]) -> None:
571
570
lbl .deleteLater ()
572
571
self ._handle_labels .clear ()
573
572
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
+ )
576
580
s .editingFinished .connect (self .editingFinished )
577
581
s .setValue (val )
578
582
self ._handle_labels .append (s )
@@ -581,6 +585,10 @@ def _on_value_changed(self, v: tuple[int, ...]) -> None:
581
585
label .setValue (val )
582
586
self ._reposition_labels ()
583
587
588
+ def _on_slider_label_edited (self , pos : float ) -> None :
589
+ idx = getattr (self .sender (), "_index" , 0 )
590
+ self ._slider .setSliderPosition (pos , idx )
591
+
584
592
def _on_range_changed (self , min : int , max : int ) -> None :
585
593
if (min , max ) != (self ._slider .minimum (), self ._slider .maximum ()):
586
594
self ._slider .setRange (min , max )
@@ -640,12 +648,14 @@ class SliderLabel(QDoubleSpinBox):
640
648
def __init__ (
641
649
self ,
642
650
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 ,
646
655
) -> None :
647
656
super ().__init__ (parent = parent )
648
657
self ._slider = slider
658
+ self ._index = index
649
659
self .setFocusPolicy (Qt .FocusPolicy .ClickFocus )
650
660
self .setMode (EdgeLabelMode .LabelIsValue )
651
661
self .setDecimals (0 )
0 commit comments