PyQt5基本窗口控件(八)QSlider

PyQt5基本窗口控件(八)QSlider

八、QSlider(滑动条)

  • QSlider 控件提供了一个垂直或水平的滑动条,滑动条是一个用于控制有界值的典型控件,它允许用户沿水平或垂直方向在某一范围内移动滑块,并将滑块所在的位置转换成一个合法范围内的整数值。有时候这种方式比输入数字或者使用SpinBox(计数器)更加自然。在槽函数中对滑块所在位置的处理相当于从整数之间的最小值和最高值进行取值。

  • 一个滑块条控件可以以水平或垂直的方式显示,在构造函数中进行设置。

self.sp=QSlider(Qt.Horizontal)
self.sp=QSlider(Qt.Vertical)
  • QSlider类中的常用方法
方法描   述
setMinimum()设置滑动条控件的最小值
setMaximum()设置滑动条控件的最大值
setSingleStep()设置滑动条控件递增/递减的步长值
setValue()设置滑动条控件的值
Value()获得滑动条控件的值
setTickInterval()设置刻度间隔
setTickPosition()设置刻度标记的位置,可以输入一个枚举值, 这个枚举值指定刻度线相对于滑块和用户操作的位置,以下是可以输入的枚举值
QSlider.NoTicks不绘制任何刻度线
QSlider.TicksBothSides在滑块的两侧绘制刻度线
QSlider.TicksAbove在(水平)滑块上方绘制刻度线
QSlider.TicksBelow在(水平)滑块下方绘制刻度线
QSlider.TicksRight在(垂直)滑块右侧绘制刻度线
  • QSlider类中的常用信号
信号描述
valueChanged当滑块的值发生改变时发射此信号,此信号是最常用的
sliderPressed当用户按下滑块时发射此信号
sliderMoved当用户拖动滑块时发射此信号
sliderReleased当用户释放滑块时发射此信号
案例十九 QSlider的使用
# -*- coding:utf-8 -*-
"""
    # @Time:2022/12/9 0009 13:21
    # @Author:晚秋拾叶
    # @File:qt04_QSider.py
    # @PyCharm之Python
"""
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)
        self.setWindowTitle("QSlider案例")
        self.resize(300, 100)

        layout = QVBoxLayout()
        self.l1 = QLabel("Hello PyQt5!")
        self.l1.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.l1)

        # 水平
        self.s1 = QSlider(Qt.Horizontal)
        # 设置最小值
        self.s1.setMinimum(10)
        # 设置最大值
        self.s1.setMaximum(50)
        # 步长
        self.s1.setSingleStep(3)
        # 设置当前值
        self.s1.setValue(20)

        ## 刻度位置
        self.s1.setTickPosition(QSlider.TicksBelow)
        # 设置刻度间隔
        self.s1.setTickInterval(5)
        layout.addWidget(self.s1)

        # 连接信号槽
        self.s1.valueChanged.connect(self.valuechange)
        self.setLayout(layout)

    def valuechange(self):
        print("Current slider value = %s" % self.s1.value())
        size = self.s1.value()
        self.l1.setFont(QFont("Arial", size))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = SliderDemo()
    win.show()
    sys.exit(app.exec_())

  • 代码分析

  • 在这个例子中,将一个标签和一个水平滑动条放置在一个垂直布局器中,再将滑块的valueChange信号连接到槽函数valueChange()。

      # 连接信号槽
      self.s1.valueChanged.connect(self.valuechange)
    
  • 槽函数valueChange()读取滑块当前值,并将其作为字号的大小。

      size = self.s1.value()
      self.l1.setFont(QFont("Arial", size))
    
  • 使用setTickInterval(5)设置刻度间隔后,在绘制刻度时就会有9个刻度点(从10开始,每隔步长5就有一个点,到50结束)。

  • 效果如图
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山哥ol

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值