PyQt: widget y señal QSlider

QSliderEl objeto de clase presenta al usuario una ranura sobre la que se puede mover un asa. Es un widget clásico para controlar un valor acotado. La posición del asa en la ranura es equivalente a un número entero entre los límites inferior y superior del control.

Un control deslizante se puede mostrar de manera horizontal o vertical mencionando la orientación en el constructor.

self.sp = QSlider(Qt.Horizontal)
self.sp = QSlider(Qt.Vertical)

La siguiente tabla enumera algunos de los métodos más utilizados de la clase QSlider:

A continuación se muestran los métodos de QSlider más utilizados.

No Señor. Métodos y descripción
1

setMinimum()

Establece el límite inferior del control deslizante

2

setMaximum()

Establece el límite superior del control deslizante

3

setSingleStep()

Establece el paso de incremento / decremento

4

setValue()

Establece el valor del control mediante programación

5

value()

Devuelve el valor actual

6

setTickInterval()

Pone el número de ticks en el surco

7

setTickPosition()

Coloca las garrapatas en la ranura. Los valores son -

QSlider.NoTicks Sin marcas de graduación
QSlider.TicksBothLides Marcas de garrapatas en ambos lados
QSlider.TicksAbove Marcas de graduación sobre el control deslizante
QSlider.TicksBelow Marcas de graduación debajo del control deslizante
QSlider.TicksLeft Marcas de graduación a la izquierda del control deslizante
QSlider.TicksRight Marcas de graduación a la derecha del control deslizante

Señales QSlider

No Señor. Métodos y descripción
1

valueChanged()

Cuando el valor del control deslizante ha cambiado

2

sliderPressed()

Cuando el usuario comienza a arrastrar el control deslizante

3

sliderMoved()

Cuando el usuario arrastra el control deslizante

4

sliderReleased()

Cuando el usuario suelta el control deslizante

valueChanged () es la señal que se utiliza con más frecuencia.

Ejemplo

El siguiente ejemplo demuestra la funcionalidad anterior. Una etiqueta y un control deslizante horizontal se colocan en un diseño vertical. La señal valueChanged () del control deslizante está conectada al método valuechange ().

self.sl.valueChanged.connect(self.valuechange)

La función de ranura valuechange () lee el valor actual del control deslizante y lo usa como el tamaño de fuente para el título de la etiqueta.

size = self.sl.value()
self.l1.setFont(QFont("Arial",size))

El código completo es el siguiente:

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()

El código anterior produce la siguiente salida:

El tamaño de fuente de la etiqueta cambia a medida que el control deslizante se mueve a través del control.