PyQt5的QSlider控件

QSlider简介

  • QSlider小部件提供了一个垂直或水平滑块。
  • 滑块是控制有界值的经典控件。它允许用户沿水平或垂直凹槽移动滑块手柄,并将手柄的位置转换为合法范围内的整数值。

QSlider常用属性和方法

  • slider 提供了两个自然的步长;较大的步长用 pageStep 表示,相当于按下键盘上的 PageDown 和 PageUp;较小的步长用 singleStep 表示,相当于按下键盘上的上、下键。
  • Left/Down,使滑动条减少一个singleStep
  • Right/Up,使滑动条增加一个singleStep
  • PageUp/PageDown,使滑动条增加/减少一个pageStep
  • Home/End,使滑动条移动到min/max(注意不要搞反)
名称描述
setOrientation()设置slider的方向Qt.Horizontal,或者Qt.Vertical
orientation()获取slider的方向
setMaximum(int)设置最大值
maximum()获取最大值
setMinimum(int)设置最小值
minimum()获取最小值
setPageStep(int)设置每页的步长
pageStep()获取每页的步长
setSingleStep(int)即单步移动的步长
singleStep()获取单步的步长
setSliderPosition(int)设置slider的位置
sliderPosition()获取slider的位置
setValue(int)设置slider 的值,与setSliderPosition(int)一致
value()获取slider 的值
setInvertedAppearance(True/False)设置 slider 的值进行反转: 即如果是水平方向的 slider,默认情况下,最小值在最左边,最大值在最右边,但是设置 slider 的值进行反转后,最小值变到了最右边,最大值改到了最左边
invertedAppearance获取翻转设置
setTracking(True/False)置是否启动滑块追踪:true 表示启动追踪;false 表示禁用追踪;如果启用了滑块追踪,则滑块在拖动过程中会一直触发 valueChanged 信号;如果禁用了滑块追踪,则滑块在拖动过程中不会触发 valueChanged 信号,只有在用户释放滑块时,才触发 valueChanged 信号

hasTracking()|获取是否启用了追踪

QSlider常用信号

  • sliderMoved和valueChanged的区别在于,sliderMoved只会在滑块被拖动的情况下激活,在直接点击滑动条时它并不会被激活
名称描述
rangeChanged(int min, int max)当 slider 的取值范围发生变化时触发的信号;其中参数 min 表示新的最小值,参数 max 表示新的最大值。
sliderMoved(int)当 slider 移动时触发的信号
valueChanged(int)当 slider 的值发生改变时触发的信号
sliderPressed() sliderReleased()表示用户按下 slider 和释放 slider 触发的信号

QSlider刻度线

  • QSlider允许在滑动条旁边画一条刻度线,并设置刻度线的位置和刻度线之间的间距。

关于刻度线的方法

  • 间距值的单位不是毫米厘米这些,而是根据min,max得到的单位。
方法描述
TickPosition tickPosition (self)获取刻度线位置
setTickPosition (self, TickPosition position)设置刻度线位置
int tickInterval (self)获取刻度线间隔
setTickInterval (self, int ti)设置刻度线间隔

刻度线的位置TickPosition

常量描述
QSlider.NoTicks不设置刻度线
QSlider.TicksBothSides两边都设置刻度线
QSlider.TicksAbove在水平滑动条上方设置刻度线
QSlider.TicksBelow在水平滑动条下方设置刻度线
QSlider.TicksLeft在垂直滑动条左方设置刻度线
QSlider.TicksRight在垂直滑动条右方设置刻度线

QSlider举例

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *


class SliderDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QSlider Demo")
        self.resize(300, 100)

        self.lb1 = QLabel("我爱你,中国!")
        self.lb1.setAlignment(Qt.AlignCenter)

        # 水平方向slider
        self.sl = QSlider(Qt.Horizontal)
        print(self.sl.orientation())
        # 设置最小最大值及step, 当前值
        self.sl.setMinimum(10)
        self.sl.setMaximum(50)
        self.sl.setInvertedAppearance(True)
        self.sl.setPageStep(15)
        self.sl.setSingleStep(3)
        self.sl.setValue(20)

        # 刻度位置,刻度在下方
        self.sl.setTickPosition(QSlider.TicksBelow)

        # 设置刻度间隔
        self.sl.setTickInterval(5)

        vbox = QVBoxLayout(self)
        vbox.addWidget(self.lb1)
        vbox.addWidget(self.sl)
        self.sl.valueChanged.connect(self.slot_value_change)
        # self.sl.sliderMoved.connect(self.slot_slider_move)
        self.sl.rangeChanged.connect(self.slot_range_change)
        # self.sl.sliderMoved.connect(self.slot_slider_move)

    def slot_value_change(self):
        print('current slider value=%s' % self.sl.value())
        size = self.sl.value()
        self.lb1.setFont(QFont("Arial", size))
        print(self.sl.sliderPosition())
        print(self.sl.value())
        if size == 50:
            self.sl.setMaximum(100)

    def slot_range_change(self):
        print("max value change to %d" % self.sl.value())

    def slot_slider_move(self):
        print("slider is moving")
        print(self.sl.value())


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值