PyQt5 组件之QSlider

本文介绍了PyQt5中的QSlider控件,详细讲解了其功能和常见方法,如设置最小值、最大值、步长、当前值以及刻度设置。并提供了信号槽机制的示例,展示如何在滑块值改变时更新标签的字体大小。通过实例代码展示了如何使用QSlider创建交互式的GUI应用。
摘要由CSDN通过智能技术生成

QSlider简介

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

QSlider类中常用的方法

方法描述
setMinimum()设置滑动条控件的最小值
setMaximum()设置滑动条控件的最大值
setSingleStep()设置滑动条控件的步长
setValue()设置滑动条控件的值
value()获取滑动条控件的值
setTickInterval()设置刻度间隔
setTickPosition()设置刻度标记的位置,可以输入一个枚举值,这个枚举值指定刻度线想当与滑块和用户操作的位置,以下是可以输入的枚举值:
QSlider.NoTicks:不绘制任何刻度线
QSlider.TicksBothSides:在滑块的两侧绘制刻度线
QSlider.TicksAbove:在滑块的(水平)上方绘制刻度线
QSlider.TicksBelow:在滑块的(水平)下方绘制刻度线
QSlider.TicksLeft:在滑块的(垂直)左侧绘制刻度线
QSlider.TicksRight,在滑块的(垂直)右侧绘制刻度线

QSlider类中的常用信号

信号描述
vlaueChanged当滑块的值发生改变时发射此信号,此信号是最常用的
sliderPressed当用户按下滑块时发射此信号
sliderMoved当用户拖动滑块时发射此信号
slierReleased当用户释放滑块时发射此信号

QSlider效果截图:

  PyQt 设计器截图:

 *.ui 转换为*.py 代码 

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled6.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.
import sys

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication, QMainWindow, QSlider


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(230, 80, 261, 42))
        self.widget.setObjectName("widget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtWidgets.QLabel(self.widget)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label, 0, QtCore.Qt.AlignHCenter)
        self.horizontalSlider = QtWidgets.QSlider(self.widget)
        self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
        self.horizontalSlider.setObjectName("horizontalSlider")
        self.verticalLayout.addWidget(self.horizontalSlider)

        ##设置最小值
        self.horizontalSlider.setMinimum(10)
        # 设置最大值
        self.horizontalSlider.setMaximum(50)
        # 步长
        self.horizontalSlider.setSingleStep(3)
        # 设置当前值
        self.horizontalSlider.setValue(20)
        # 刻度位置,刻度下方
        self.horizontalSlider.setTickPosition(QSlider.TicksBelow)
        # 设置刻度间距
        self.horizontalSlider.setTickInterval(5)
        # 设置连接信号槽函数
        self.horizontalSlider.valueChanged.connect(self.valuechange)

        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "TextLabel"))

    def valuechange(self):
        # 输出当前地刻度值,利用刻度值来调节字体大小
        print('当前刻度值=%s' % self.horizontalSlider.value())
        size = self.horizontalSlider.value()
        self.label.setFont(QFont('Arial', size))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

 需要向PyUIC 生成的代码,添加如下代码片段:

重点实现QSlider属性设置和事件绑定

        ##设置最小值
        self.horizontalSlider.setMinimum(10)
        # 设置最大值
        self.horizontalSlider.setMaximum(50)
        # 步长
        self.horizontalSlider.setSingleStep(3)
        # 设置当前值
        self.horizontalSlider.setValue(20)
        # 刻度位置,刻度下方
        self.horizontalSlider.setTickPosition(QSlider.TicksBelow)
        # 设置刻度间距
        self.horizontalSlider.setTickInterval(5)
        # 设置连接信号槽函数
        self.horizontalSlider.valueChanged.connect(self.valuechange)
 def valuechange(self):
        # 输出当前地刻度值,利用刻度值来调节字体大小
        print('当前刻度值=%s' % self.horizontalSlider.value())
        size = self.horizontalSlider.value()
        self.label.setFont(QFont('Arial', size))

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值