PyQt5 - QSlider 小部件和信号

  • 简述

    QSlider类对象向用户展示了一个可以移动手柄的凹槽。它是控制有界值的经典小部件。凹槽上手柄的位置相当于控件上下限之间的整数。
    通过在构造函数中提及方向,可以以水平或垂直方式显示滑块控件。
    
    self.sp = QSlider(Qt.Horizontal)
    self.sp = QSlider(Qt.Vertical)
    
    下表列出了 QSlider 类的一些常用方法 -
    序号 方法和描述
    1
    setMinimum()
    设置滑块的下限
    2
    setMaximum()
    设置滑块的上限
    3
    setSingleStep()
    设置递增/递减步长
    4
    setValue()
    以编程方式设置控件的值
    5
    value()
    返回当前值
    6
    setTickInterval()
    将刻度数放在凹槽上
    7
    setTickPosition()
    将刻度放在凹槽上。价值观是 -
    QSlider.NoTicks 没有刻度线
    QSlider.TicksBothSides 两边都有刻度线
    QSlider.TicksAbove 滑块上方的刻度线
    QSlider.TicksBelow 滑块下方的刻度线
    QSlider.TicksLeft 滑块左侧的刻度线
    QSlider.TicksRight 滑块右侧的刻度线
  • QSlider 信号

    以下是 QSlider Signals 中的方法 -
    序号 方法和描述
    1
    valueChanged()
    当滑块的值发生变化时
    2
    sliderPressed()
    当用户开始拖动滑块时
    3
    sliderMoved()
    当用户拖动滑块时
    4
    sliderReleased()
    当用户释放滑块时
    valueChanged()信号是最常用的一种。

    例子

    以下示例演示了上述功能。一个标签和一个水平滑块放置在垂直布局中。Slider 的 valueChanged() 信号连接到 valuechange() 方法。
    
    self.sl.valueChanged.connect(self.valuechange)
    
    槽函数 valuechange() 读取滑块的当前值并将其用作标签标题的字体大小。
    
    size = self.sl.value()
    self.l1.setFont(QFont("Arial",size))
    
    完整的代码如下 -
    
    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtGui import *
    from PyQt5.QtWidgets import *
    
    class sliderdemo(QWidget):
       def __init__(self, parent = None):
          super(sliderdemo, self).__init__(parent)
    
          layout = QVBoxLayout()
          self.l1 = QLabel("Hello")
          self.l1.setMoognment(Qt.MoognCenter)
          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()
    
  • 输出

    上面的代码产生以下输出 -
    小部件和信号输出
    标签的字体大小随着滑块的手柄在手柄上移动而改变。