QSlider控件提供了一个垂直或水平的滑动条,滑动条是一个用于控制有界值的典型控件,它允许用户沿水平或垂直方向在某一范围内移动滑块,并将滑块所在的位置转换成一个合法范围内的整数值。
QSlider类中的常用方法
setMinimum() 设置滑动条控件的最小值
setMaximum() 设置滑动条控件的最大值
setSingleStep() 设置滑动条控件递增/递减的步长值
setValue() 设置滑动条控件的值
value() 获得滑动条控件的值
setTickInterval() 设置刻度间隔
setTickPosition() 设置刻度标记的位置,可以输入一个枚举值,这个枚举值指定刻度线相对于滑块和用户操作的位置。以下是可以输入的枚举值:
QSlider.NoTicks,不绘制任何刻度线
QSlider.TicksBothSides,在滑块的两侧绘制刻度线
QSlider.TicksAbove,在(水平)滑块上方绘制刻度线
QSlider.TicksBelow,在(水平)滑块下方绘制刻度线
QSlider.TicksLeft,在(垂直)滑块左侧绘制刻度线
QSlider.TicksRight,在(垂直)滑块右侧绘制刻度线
QSlider类中的常用信号
valueChanged 当滑块的值发生改变时发射此信号,此信号是最常用的
sliderPressed 当用户按下滑块时发射此信号
sliderMoved 当用户拖动滑块时发射此信号
sliderReleased 当用户释放滑块时发射此信号
案例19 QSlider的使用
import sys from PyQt5.QtCore import Qt from PyQt5.QtGui import QFont from PyQt5.QtWidgets import QWidget, QApplication, QSlider, QComboBox, QLabel, QVBoxLayout class SliderDemo(QWidget): def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle("Slider 例子") self.resize(300, 100) layout = QVBoxLayout() self.lb1 = QLabel("Hello PyQt5") self.lb1.setAlignment(Qt.AlignCenter) layout.addWidget(self.lb1) # 水平方向 self.sl = QSlider(Qt.Horizontal) self.sl.setMinimum(10) # 设置最小值 self.sl.setMaximum(50) # 设置最大值 self.sl.setSingleStep(3) # 步长 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) def valuechange(self): print("current slider value=%s:" % self.sl.value()) size = self.sl.value() self.lb1.setFont(QFont("Arial", size)) if __name__ == "__main__": app = QApplication(sys.argv) demo = SliderDemo() demo.show() sys.exit(app.exec_())