Resumo : neste tutorial, você aprenderá como usar a QSlider
classe 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 QSlider
classe PyQt:
QSlider(orientation[, parent=None])
Linguagem de código: Python ( python )
O QSlider
aceita dois argumentos:
Orientation
especifica a orientação do controle deslizante. Os valores válidos sãoQt.Orientation.Vertical
eQt.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.set
TickPosition
()setTickPosition
TickPosition
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.TicksBothSides
mostra 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 singleStep
e pageStep
.
Sinais
O QSlider
tem alguns sinais, mas o mais importante é valueChanged
. O QSlider
emite o valueChanged
sinal sempre que o valor do controle deslizante muda.
Exemplo PyQt QSlider
O programa a seguir usa a QSlider
classe 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 QSlider
objeto:
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 QLabel
objeto 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 QLabel
para 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
QSlider
widget PyQt para criar um controle deslizante. - Conecte-se ao
valueChanged
sinal para atualizar o valor do controle deslizante.