PyQt QSlider в Python — как использовать

Слайдер — это виджет для управления ограниченным значением. Ползунок позволяет перемещать ручку по горизонтальной или вертикальной канавке. Слайдер преобразует положение ручки в целое число в допустимом диапазоне.

Содержание

Знакомство с PyQt QSlider

Для создания виджета-слайдера в Python используйте класс PyQt QSlider:

QSlider(orientation[, parent=None])

QSlider принимает два аргумента:

  • Orientation определяет ориентацию ползунка. Допустимые значения: Qt.Orientation.Vertical и Qt.Orientation.Horizontal.
  • Parent — родительский виджет слайдера.

Например, следующий код создает горизонтальный ползунок:

slider = QSlider(Qt.Orientation.Horizontal, self)

Выход:

Пример горизонтального ползунка

А следующий код создает вертикальный слайдер:

slider = QSlider(Qt.Orientation.Vertical, self)

Выход:

Пример вертикального ползунка

Диапазон

Чтобы задать диапазон значений для ползунка, используйте метод setRange():

slider.setRange(min,max)

Также вы можете установить методы setMinimum() или setMaximum():

slider.setMinimum(min)
slider.setMaximum(max)

Шаг

При нажатии клавиши со стрелкой вверх/вниз или влево/вправо ручка ползунка будет увеличиваться/уменьшаться на один шаг.

Чтобы задать один шаг, используйте метод setSingleStep():

slider.setSingleStep(step)

Шаг страницы

Если нажать клавишу page up / page down, ручка ползунка увеличит/уменьшит шаг страницы. Чтобы установить шаг страницы, используйте метод setPageStep():

slider.setPageStep(pageStep)

Установка текущего значения

Чтобы установить значение для ползунка, используйте метод setValue():

slider.setValue(value)

Метод value() возвращает текущее значение ползунка:

current_value = slider.value()

Отображение шкалы делений

По умолчанию ползунок не имеет делений. Чтобы отобразить деления, используйте метод setTickPosition(). Метод setTickPosition устанавливает свойство TickPosition в значение.

Горизонтальный ползунок имеет две опции:

QSlider.TicksAbove – показывает деления над ползунком:

Пример отображения делений над ползунком

QSlider.TicksBelow – показывает деления под ползунком.

Пример отображения делений под ползунком

Вертикальный слайдер также имеет две опции:

QSlider.TicksLeft – показывает деления слева от ползунка:

Пример отображения делений слева от ползунка

QSlider.TicksRight – показывает деления справа от ползунка:

Пример отображения делений справа от ползунка

QSlider.TicksBothSides показывает деления по обеим сторонам канавки:

Пример отображения делений по обе стороны от ползунка

По умолчанию TickPosition имеет значение QSlider.NoTicks, то есть не отображает никаких делений.

Интервал установки

Для установки интервала между делениями используется метод setTickInteral(). По умолчанию интервал равен нулю.

Если интервал равен нулю, ползунок выберет между singleStep и pageStep.

Сигналы

QSlider имеет несколько сигналов, но самый важный из них — valueChanged. QSlider испускает сигнал valueChanged всякий раз, когда изменяется значение ползунка.

Пример PyQt QSlider

Следующая программа использует класс QSlider для создания ползунка. Метка отображает текущее значение ползунка.

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QSlider, QLabel, QFormLayout
from PyQt6.QtCore import Qt


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('PyQt QSlider')
        self.setMinimumWidth(200)

        # create a grid layout
        layout = QFormLayout()
        self.setLayout(layout)

        slider = QSlider(Qt.Orientation.Horizontal, self)
        slider.setRange(0, 100)
        slider.setValue(50)
        slider.setSingleStep(5)
        slider.setPageStep(10)
        slider.setTickPosition(QSlider.TickPosition.TicksAbove)

        slider.valueChanged.connect(self.update)

        self.result_label = QLabel('', self)

        layout.addRow(slider)
        layout.addRow(self.result_label)

        # show the window
        self.show()

    def update(self, value):
        self.result_label.setText(f'Current Value: {value}')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    sys.exit(app.exec())

Выход:

Пример создания ползунка с PyQt QSlider

Как это работает.

  • Сначала создайте объект QSlider:
slider = QSlider(Qt.Orientation.Horizontal, self)
  • Далее задайте диапазон, значение, один шаг, шаг страницы и положение отметки:
slider.setRange(0, 100)
slider.setValue(50)
slider.setSingleStep(10)
slider.setPageStep(20)
slider.setTickPosition(QSlider.TickPosition.TicksAbove)
  • Затем подключите сигнал valueChanged() к методу update():
slider.valueChanged.connect(self.update)
  • После этого создайте объект QLabel, который будет отображать текущее значение ползунка всякий раз, когда значение ползунка изменяется:
self.result_label = QLabel('', self)
  • Наконец, определите метод update(), который изменяет текст QLabel на текущее значение ползунка:
def update(self, value):
    self.result_label.setText(f'Current Value: {value}')
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *