如何获取QSlider控件滑块的宽度和位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取QSlider控件滑块的宽度和位置相关的知识,希望对你有一定的参考价值。

参考技术A sliderMoved()信号,
QSlider::setRange(min,max);
QSlider::setValue(int);
QSlider::setSliderPosition(int);

PyQt5 组件之QSlider

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))

以上是关于如何获取QSlider控件滑块的宽度和位置的主要内容,如果未能解决你的问题,请参考以下文章

七PyQT5控件——QSlider,QSpinBox

如何使用样式表更改 QSlider 句柄宽度

c语言,slider控件还不会用。如何获取当前滑块的值?请列举一段代码,谢谢!

带有两个滑块的QSlider

如何找到滑块的拇指来设置其宽度

QT QSlider 边距