Python 平均值和最大值之间存在较大差距的列表的Pyqt步长

Python 平均值和最大值之间存在较大差距的列表的Pyqt步长,python,list,pyqt,pyqt5,Python,List,Pyqt,Pyqt5,我正在pyqt中构建一个工具,它有一个滑块,用于对几何体区域进行排序。 在某些情况下,平均面积值或最小面积值与最大面积值之间的差距可能非常大 让它像: 区域=[0.5,1.0,1.3,1.7,2.6,3.0,3.5,3.9,4.0,4.1,1023.8,3245.4,3734.3] 当我为滑块设置最小值和最大值时,大约95%的滑块条是从5到3245.4的值。我正在寻找一些解决方案,使滑块的某种动态步长,以便看到从区域列表中的每一个可能的值。也就是说,是这样的 0\uuuuuuuuuuuuuuuu

我正在pyqt中构建一个工具,它有一个滑块,用于对几何体区域进行排序。 在某些情况下,平均面积值或最小面积值与最大面积值之间的差距可能非常大

让它像:
区域=[0.5,1.0,1.3,1.7,2.6,3.0,3.5,3.9,4.0,4.1,1023.8,3245.4,3734.3]

当我为滑块设置最小值和最大值时,大约95%的滑块条是从5到3245.4的值。我正在寻找一些解决方案,使滑块的某种动态步长,以便看到从区域列表中的每一个可能的值。也就是说,是这样的

0\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu5.0\uuuuuuuuuuuuuuuuuuuuuuuuuuu34.3

^^^ ^

如果您有一个值列表,但不需要类似于日志滑块的内容,则可以将
QSlider
子类化,并根据列表中的索引处理值

一个简单的例子:

class Slider(QSlider):
    doubleValueChanged = pyqtSignal(float)
    def __init__(self, values, parent=None):
        super().__init__(parent)
        self.values = values
        self.setOrientation(Qt.Horizontal)
        self.setRange(0, len(self.values) - 1)
        self.setTickInterval(1)
        self.valueChanged.connect(lambda index: self.doubleValueChanged.emit(self.values[index]))


if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)

    slider = Slider([0.5, 1.0, 1.3, 1.7, 2.6, 3.0, 3.5, 3.9, 4.0, 4.1, 1023.8, 3245.4, 3734.3])
    slider.doubleValueChanged.connect( lambda value: print("New value", value))
    slider.show()
    sys.exit(app.exec_())

我创建了一个新的信号,因为
QSlider
仅适用于整数

如果要添加标签,可以重新定义
QSlider.paintEvent