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 -

QSlider.NoTicks Sem marcas de escala
QSlider.TicksBothSides Marcas em ambos os lados
QSlider.TicksAbove Marcas acima do controle deslizante
QSlider.TicksBelow Marcas de seleção abaixo do controle deslizante
QSlider.TicksLeft Marcas de seleção à esquerda do controle deslizante
QSlider.TicksRight Marcas de seleção à direita do controle deslizante

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.