Если у вас есть список значений и вы не хотите что-то вроде ползунка log , вы можете создать подкласс 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