1919scalar (with one handle per item), and it forms the basis of
2020QRangeSlider.
2121"""
22+
2223import os
2324import platform
2425from typing import TypeVar
5960
6061
6162class _GenericSlider (QSlider ):
62- _fvalueChanged = Signal (int )
63- _fsliderMoved = Signal (int )
64- _frangeChanged = Signal (int , int )
63+ # -- BEGIN -- Original implementation, causing segfault on Linux with PySide6
64+ # https://github.com/PlotPyStack/PlotPy/issues/21
65+ # _fvalueChanged = Signal(int)
66+ # _fsliderMoved = Signal(int)
67+ # _frangeChanged = Signal(int, int)
68+ # -- END --
69+
70+ # -- BEGIN -- New implementation: avoid segfault by overriding the class attributes
71+ # instead of overriding them through instance attributes in `__init__`
72+ valueChanged = Signal (int )
73+ sliderMoved = Signal (int )
74+ rangeChanged = Signal (int , int )
75+ # -- END --
6576
6677 MAX_DISPLAY = 5000
6778
@@ -88,9 +99,13 @@ def __init__(self, *args, **kwargs) -> None:
8899 self ._control_fraction = 0.04
89100
90101 super ().__init__ (* args , ** kwargs )
91- self .valueChanged = self ._fvalueChanged
92- self .sliderMoved = self ._fsliderMoved
93- self .rangeChanged = self ._frangeChanged
102+
103+ # -- BEGIN -- Original implementation, causing segfault on Linux with PySide6
104+ # https://github.com/PlotPyStack/PlotPy/issues/21
105+ # self.valueChanged = self._fvalueChanged
106+ # self.sliderMoved = self._fsliderMoved
107+ # self.rangeChanged = self._frangeChanged
108+ # -- END --
94109
95110 self .setAttribute (Qt .WidgetAttribute .WA_Hover )
96111 self .setStyleSheet ("" )
0 commit comments