17.PyQt5【基本组件】滑块-QSlider
一、前言
QSlider类对象向用户展示了一个可以移动手柄的凹槽。它是控制有界值的经典小部件。凹槽上手柄的位置相当于控件上下限之间的整数。
通过在构造函数中提及方向,可以以水平或垂直方式显示滑块控件。
二、学习目标
1.QSlider常用方法
2.QSlider常用信号
3.QSlider组件的应用
三、知识点
1.【QSlider常用方法】
方法 | 描述 |
---|---|
setMinimum() | 设置滑块的下限 |
setMaximum() | 设置滑块的上限 |
setSingleStep() | 设置递增/递减步长 |
setValue() | 以编程方式设置控件的值 |
value() | 返回当前值 |
setTickInterval() | 将刻度数放在凹槽上 |
setTickPosition() | 将刻度放在凹槽上,有以下几种方式: QSlider.NoTicks:没有刻度线 QSlider.TicksBothSides:两边都有刻度线 QSlider.TicksAbove:滑块上方的刻度线 QSlider.TicksBelow:滑块下方的刻度线 QSlider.TicksLeft:滑块左侧的刻度线 QSlider.TicksRight:滑块右侧的刻度线 |
2.【QSlider常用信号】
信号 | 描述 |
---|---|
valueChanged | 当滑块的值发生变化时 |
sliderPressed | 当用户开始拖动滑块时 |
sliderMoved | 当用户拖动滑块时 |
sliderReleased | 当用户释放滑块时 |
3.【QSlider组件的应用】
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QSlider
class QmyWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent) # 调用父类的构造函数,创建QWidget窗体
self.setupUi()
def setupUi(self):
"""页面初始化"""
# 设置窗体大小及标题
self.resize(500, 400)
self.setWindowTitle("QSlider组件示例")
# 创建布局
self.layout = QVBoxLayout()
# QSlider组件定义
self.hSlider = QSlider(Qt.Horizontal) # 创建水平滑块
self.vSlider = QSlider(Qt.Vertical) # 创建垂直滑块
# QSlider组件设置
self.hSlider.setMaximum(100) # 为水平滑块设置上限100
self.hSlider.setSingleStep(10) # 为水平滑块设置步长10
self.hSlider.setTickPosition(QSlider.TicksBelow) # 水平滑块下方设置刻度
# QSlider关联信号
self.hSlider.valueChanged.connect(self.on_hSlider_valueChanged)
# 将组件添加到布局中
self.layout.addWidget(self.hSlider)
self.layout.addWidget(self.vSlider)
# 为窗体添加布局
self.setLayout(self.layout)
def on_hSlider_valueChanged(self, num):
"""槽函数"""
print("hSlider滑块获取刻度为:{}!".format(num))
if __name__ == '__main__':
app = QApplication(sys.argv)
myMain = QmyWidget()
myMain.show()
sys.exit(app.exec_())
-
关键代码
# QSlider组件定义 self.hSlider = QSlider(Qt.Horizontal) # 创建水平滑块 self.vSlider = QSlider(Qt.Vertical) # 创建垂直滑块 # QSlider组件设置 self.hSlider.setMaximum(100) # 为水平滑块设置上限100 self.hSlider.setSingleStep(10) # 为水平滑块设置步长10 self.hSlider.setTickPosition(QSlider.TicksBelow) # 水平滑块下方设置刻度 # QSlider关联信号 self.hSlider.valueChanged.connect(self.on_hSlider_valueChanged)