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”显示总步数。 |
下面通过一个示例来演示以上三个组件的使用方法,界面如下:
实现功能:当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_())
运行结果: