PyQt - QSlider Widget & Signal
QSliderO objeto de classe apresenta ao usuário uma ranhura sobre a qual uma alça pode ser movida. É um widget clássico para controlar um valor limitado. A posição da alça na ranhura é equivalente a um número inteiro entre os limites inferior e superior do controle.
Um controle deslizante pode ser exibido na forma horizontal ou vertical, mencionando a orientação no construtor.
self.sp = QSlider(Qt.Horizontal)
self.sp = QSlider(Qt.Vertical)
A tabela a seguir lista alguns dos métodos mais usados da classe QSlider -
A seguir estão os métodos de QSlider mais comumente usados.
Sr. Não. | Métodos e Descrição | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
setMinimum() Define o limite inferior do controle deslizante |
||||||||||||
2 |
setMaximum() Define o limite superior do controle deslizante |
||||||||||||
3 |
setSingleStep() Define o passo de incremento / decremento |
||||||||||||
4 |
setValue() Define o valor do controle programaticamente |
||||||||||||
5 |
value() Retorna o valor atual |
||||||||||||
6 |
setTickInterval() Coloca o número de tiques na ranhura |
||||||||||||
7 |
setTickPosition() Coloca os pontos na ranhura. Os valores são -
|
Sinais QSlider
Sr. Não. | Métodos e Descrição |
---|---|
1 |
valueChanged() Quando o valor do controle deslizante mudou |
2 |
sliderPressed() Quando o usuário começa a arrastar o controle deslizante |
3 |
sliderMoved() Quando o usuário arrasta o controle deslizante |
4 |
sliderReleased() Quando o usuário solta o controle deslizante |
O sinal valueChanged () é o mais freqüentemente usado.
Exemplo
O exemplo a seguir demonstra a funcionalidade acima. Um rótulo e um controle deslizante horizontal são colocados em um layout vertical. O sinal valueChanged () do controle deslizante é conectado ao método valuechange ().
self.sl.valueChanged.connect(self.valuechange)
A função de slot valuechange () lê o valor atual do controle deslizante e o usa como o tamanho da fonte para a legenda do rótulo.
size = self.sl.value()
self.l1.setFont(QFont("Arial",size))
O código completo é o seguinte -
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class sliderdemo(QWidget):
def __init__(self, parent = None):
super(sliderdemo, self).__init__(parent)
layout = QVBoxLayout()
self.l1 = QLabel("Hello")
self.l1.setAlignment(Qt.AlignCenter)
layout.addWidget(self.l1)
self.sl = QSlider(Qt.Horizontal)
self.sl.setMinimum(10)
self.sl.setMaximum(30)
self.sl.setValue(20)
self.sl.setTickPosition(QSlider.TicksBelow)
self.sl.setTickInterval(5)
layout.addWidget(self.sl)
self.sl.valueChanged.connect(self.valuechange)
self.setLayout(layout)
self.setWindowTitle("SpinBox demo")
def valuechange(self):
size = self.sl.value()
self.l1.setFont(QFont("Arial",size))
def main():
app = QApplication(sys.argv)
ex = sliderdemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
O código acima produz a seguinte saída -
O tamanho da fonte do rótulo muda conforme a alça do controle deslizante é movida pela alça.