PyQt QSlider

Resumo : neste tutorial, você aprenderá como usar a QSliderclasse PyQt para criar um widget deslizante.

Introdução ao PyQt QSlider

Um controle deslizante é um widget para controlar um valor limitado. Um controle deslizante permite mover uma alça ao longo de uma ranhura horizontal ou vertical. Um controle deslizante traduz a posição do identificador em um número inteiro dentro de um intervalo válido.

Para criar um controle deslizante, você usa a QSliderclasse PyQt:

QSlider(orientation[, parent=None])Linguagem de código:  Python  ( python )

O QSlideraceita dois argumentos:

  • Orientationespecifica a orientação do controle deslizante. Os valores válidos são Qt.Orientation.Verticale Qt.Orientation.Horizontal.
  • Parenté o widget pai do controle deslizante.

Por exemplo, o seguinte cria um controle deslizante horizontal:

slider = QSlider(Qt.Orientation.Horizontal, self)Linguagem de código:  Python  ( python )

Saída:

E o seguinte cria um controle deslizante vertical:

slider = QSlider(Qt.Orientation.Vertical, self)Linguagem de código:  Python  ( python )

Saída:

Faixa

Para definir o intervalo de valores do controle deslizante, você usa o setRange()método:

slider.setRange(min,max)Linguagem de código:  Python  ( python )

Além disso, você pode definir os métodos setMinimum()ou :setMaximum()

slider.setMinimum(min)
slider.setMaximum(max)Linguagem de código:  Python  ( python )

Único passo

Quando você pressiona a tecla de seta para cima/para baixo ou para a esquerda/direita, a alça do controle deslizante aumentará/diminuirá um único passo.

Para definir a etapa única, você usa o setSingleStep()método:

slider.setSingleStep(step)Linguagem de código:  Python  ( python )

Etapa da página

Se você pressionar a tecla page up/page down, a alça do controle deslizante aumentará/diminuirá um passo de página. Para definir uma etapa de página, você usa o setPageStep()método:

slider.setPageStep(pageStep)Linguagem de código:  Python  ( python )

Configurando o valor atual

Para definir um valor para o controle deslizante, você usa o setValue()método:

slider.setValue(value)Linguagem de código:  Python  ( python )

O value()método retorna o valor atual do controle deslizante:

current_value = slider.value()Linguagem de código:  Python  ( python )

Exibindo marcas de escala

Por padrão, um controle deslizante não possui marcas de seleção. Para mostrar as marcas de escala, você usa o método. O define a propriedade com um valor.setTickPosition()setTickPositionTickPosition

O controle deslizante horizontal tem duas opções:

O QSlider.TicksAbove– mostra marcas acima do controle deslizante:

O QSlider.TicksBelow– mostra marcas abaixo do controle deslizante.

O controle deslizante vertical também possui duas opções:

O QSlider.TicksLeft– mostra as marcas de seleção à esquerda do controle deslizante:

O QSlider.TicksRight– mostra as marcas de seleção à direita do controle deslizante:

O QSlider.TicksBothSidesmostra as marcas em ambos os lados da ranhura:

Por padrão, TickPositioné QSlider.NoTicks que não exibe nenhuma marca de escala.

Intervalo de configuração

Para definir o intervalo entre as marcas de escala, você usa o setTickInteral()método. Por padrão, o intervalo do ticket é zero.

Se o intervalo de tick for zero, o controle deslizante escolherá entre singleStepe pageStep.

Sinais

O QSlidertem alguns sinais, mas o mais importante é valueChanged. O QSlideremite o valueChangedsinal sempre que o valor do controle deslizante muda.

Exemplo PyQt QSlider

O programa a seguir usa a QSliderclasse para criar um controle deslizante. Um rótulo exibe o valor atual do controle deslizante.

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())Linguagem de código:  Python  ( python )

Saída:

Como funciona.

Primeiro, crie um QSliderobjeto:

slider = QSlider(Qt.Orientation.Horizontal, self)Linguagem de código:  Python  ( python )

Em seguida, defina o intervalo, o valor, a etapa única, a etapa da página e a posição do tick:

slider.setRange(0, 100)
slider.setValue(50)
slider.setSingleStep(10)
slider.setPageStep(20)
slider.setTickPosition(QSlider.TickPosition.TicksAbove)Linguagem de código:  Python  ( python )

Em seguida, conecte o valueChanged()sinal ao update()método:

slider.valueChanged.connect(self.update)Linguagem de código:  Python  ( python )

Depois disso, crie um QLabelobjeto que exibirá o valor atual do controle deslizante sempre que o valor do controle deslizante for alterado:

self.result_label = QLabel('', self)Linguagem de código:  Python  ( python )

Por fim, defina o update()método que altera o texto do QLabelpara o valor atual do controle deslizante:

def update(self, value):
    self.result_label.setText(f'Current Value: {value}')Linguagem de código:  Python  ( python )

Resumo

  • Use o QSliderwidget PyQt para criar um controle deslizante.
  • Conecte-se ao valueChangedsinal para atualizar o valor do controle deslizante.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *