【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”显示总步数。 |
下面通过一个示例来演示以上三个组件的使用方法,界面如下:

实现功能:当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_())
运行结果:

更多推荐
所有评论(0)