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