【2.PyQt5 GUI 常用界面组件】3.QSlider和QProgressBar组件

3.QSlider和QProgressBar组件

  • 滑动输入组件

    • QSlider

    • QScrollBar

  • 进度条显示组件

    • QProgressBar

QSlider和QScrollBar组件都是从QAbstractSlider类继承而来的、其属性如下:

属性 描述
minimum 最小值
maximum 最大值
singleStep 单步长
pageStep 按键PgUp和PgDn时的步长
value 当前值
sliderPosition 滑块的位置,若tracking属性设置为True,该值等于value
tracking sliderPosition的值是否与value相同
orientation 方向,可以设置为水平或垂直,其取值: Qt.Horizontal 表示水平 Qt.Vertical 表示垂直
invertedAppearance 显示方式是否反向,若设置为False,水平的Slider由左向右数值逐渐增大
invertedControls 反向按键控制,若设置为True,则按键PgUp或PgDn调整的数值方向相反

QSlider专有的属性:

属性 描述
tickPosition 标尺刻度的显示位置,取值: QSlider.NoTicks 不显示刻度 QSlider.TicksBothSides 标尺两侧都显示刻度 QSlider.TicksAbove 标尺上方显示刻度 QSlider.TicksBelow 标尺下方显示刻度 QSlider.TicksLeft 标尺左侧显示刻度 QSlider.TicksRight 标尺右侧显示刻度TICKiNTERVAL
tickInterval 标尺刻度之间的间隔值,若设置为0,会在singleStep和pageStep之间自动选择

QSlider和QScrollBar组件的常用信号

信号 描述
valueChanged(int) 在滑块改变当前值时发射的信号

QProgressBar的常用属性:

属性 描述
minimum 最小值
maximum 最大值
value 当前值
textVisable 是否显示文字,文字一般是百分比表示的进度
orientation 显示方向
format 显示文字的格式,“%p%”显示百分比(默认),“%v”显示当前值,“%m”显示总步数。

下面通过一个示例来演示以上三个组件的使用方法,界面如下:

【2.PyQt5 GUI 常用界面组件】3.QSlider和QProgressBar组件_第1张图片

 

实现功能:当Slider或ScrollBar的当前值改变时,都将设置ProgressBar的当前值;下方的复选框和单选按钮可以多ProgressBar进行相应的设置。

属性设置表:

objectName 属性
horizontalSlider minimum=0 maximum=100
horizontalScrollBar minimum=0 maximum=100
progressBar minimum=0 maximum=100
checkBoxText text="显示文本"
checkBoxInverted text="反向显示"
radioButtonP text="以百分比显示"
radioButtonV text="以当前值显示"
radioButtonM text="以总步数显示"

代码如下:

# coding: utf-8
import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtCore import pyqtSlot
from ui_widget import Ui_Widget
​
class QAppWidget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.__ui = Ui_Widget()
        self.__ui.setupUi(self)
​
        self.__ui.horizontalSlider.valueChanged.connect(self.do_changedValue)
        self.__ui.horizontalScrollBar.valueChanged.connect(self.do_changedValue)
​
    def do_changedValue(self, val):
        self.__ui.progressBar.setValue(val)
​
    @pyqtSlot(bool)
    def on_checkBoxText_clicked(self, checked):
        self.__ui.progressBar.setTextVisible(checked)
​
    @pyqtSlot(bool)
    def on_checkBoxInverted_clicked(self, checked):
        self.__ui.progressBar.setInvertedAppearance(checked)
​
    def on_radioButtonP_clicked(self):
        self.__ui.progressBar.setFormat('%p%')
​
    def on_radioButtonV_clicked(self):
        self.__ui.progressBar.setFormat('%v')
​
    def on_radioButtonM_clicked(self):
        self.__ui.progressBar.setFormat('%m')
​
if __name__ == '__main__':
    app = QApplication(sys.argv)
    widget = QAppWidget()
    widget.show()
    sys.exit(app.exec_())

运行结果:

【2.PyQt5 GUI 常用界面组件】3.QSlider和QProgressBar组件_第2张图片

 

你可能感兴趣的:(PyQt5,Python,GUI,qt,开发语言,python)