PyQt - Widget e segnale QSlider

QSliderL'oggetto class presenta all'utente una scanalatura sulla quale è possibile spostare una maniglia. È un widget classico per controllare un valore limitato. La posizione della maniglia sulla scanalatura è equivalente a un numero intero tra i limiti inferiore e superiore del controllo.

Un controllo del dispositivo di scorrimento può essere visualizzato in modo orizzontale o verticale menzionando l'orientamento nel costruttore.

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

La tabella seguente elenca alcuni dei metodi usati di frequente della classe QSlider -

Di seguito sono riportati i metodi più comunemente usati di QSlider.

Sr.No. Metodi e descrizione
1

setMinimum()

Imposta il limite inferiore del cursore

2

setMaximum()

Imposta il limite superiore del cursore

3

setSingleStep()

Imposta il passo di incremento / decremento

4

setValue()

Imposta il valore del controllo a livello di codice

5

value()

Restituisce il valore corrente

6

setTickInterval()

Mette il numero di tick sul solco

7

setTickPosition()

Posiziona le zecche sul solco. I valori sono -

QSlider.NoTicks Nessun segno di spunta
QSlider.TicksBothSides Segni di spunta su entrambi i lati
QSlider.TicksAbove Segni di spunta sopra il cursore
QSlider.TicksBelow Segni di spunta sotto il cursore
QSlider.TicksLeft Segni di spunta a sinistra del cursore
QSlider.TicksRight Segni di spunta a destra del cursore

Segnali QSlider

Sr.No. Metodi e descrizione
1

valueChanged()

Quando il valore del cursore è cambiato

2

sliderPressed()

Quando l'utente inizia a trascinare il cursore

3

sliderMoved()

Quando l'utente trascina il cursore

4

sliderReleased()

Quando l'utente rilascia il dispositivo di scorrimento

Il segnale valueChanged () è quello più utilizzato.

Esempio

Il seguente esempio dimostra la funzionalità di cui sopra. Un'etichetta e un cursore orizzontale vengono inseriti in un layout verticale. Il segnale valueChanged () di Slider è collegato al metodo ValueChange ().

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

La funzione slot ValueChange () legge il valore corrente del cursore e lo usa come dimensione del carattere per la didascalia dell'etichetta.

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

Il codice completo è il seguente:

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

Il codice precedente produce il seguente output:

La dimensione del carattere dell'etichetta cambia quando la maniglia del dispositivo di scorrimento viene spostata sulla maniglia.