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 -
|
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.