进度条控件QProgressBar
进度条控件QProgressBar 通常用来显示一项任务完成的进度例如复制文件导出数据的进度。进度条QProgressBar是从QWidget 继承而来的。
用QProgressBar类创建实例对象的方法如下所示其中 parent 是窗口或者容器类控件。
QProgressBar(parent;QWidget=None)
进度条控件QProgressBar的常用方法
进度条控件QProgressBar 的常用方法如表所示,主要方法介绍如下
-
值设置
-
设置进度条的最小值可以用setRange(int,int)方法,也可以用setMinimum(int)和setMaximum(int)方法;
-
设置当前值用setValue(int)方法;
-
获取当前值用value()方法;
-
用reset()方法可以清空进度,重新回到初始位置。
-
当不知道总的工作量,或工作量还无法估计时,可以设置进度条的最大值和最小值都是 0。进度条显示繁忙指示时,不会显示当前的值。
-
-
进度条的方向
-
用setOrientation(Qt.Orientation)方法可以设置进度条的方向,参数Q.Orientation 可以取:
- Qt.Horizontal
- Qt.Vertical;
-
用setTextDirection(QProgressBar,Direction)方法设置进度条上文本的方向,参数 QProgressBar.Direction可以取:
- QProgressBar,TopTobottom 文本顺时针旋转 90°
- QProgressBar.bottomTotop 逆时针旋转 90
-
设置文本在进度条上的对齐方式
- 用setAlignment(Qt.Alignment)方法,如果Qt.Alignment 取 Qt.AlignHCenter,文本将会放置到进度条的中间。
-
用setFormat(str)方法设置显示的文字格式,
-
在文字中%p%表示百分比值
-
%v表示当前值
-
%m 表示总数,
-
默认显示的是%p%,例如 setFormat(“当前步数%v/总步数%m,%p%”);获取文本格式用ormat)方法;
-
获取格式化的文本用text()方法。
-
-
QProgressBar的方法及参数类型 | 返回值的类型 | 说明 |
---|---|---|
[slot]setMaximum(int) | None | 设置最大值 |
[slot]setMinimurm(int) | None | 设置最小值 |
[slot]setRange(int,int) | None | 设置范围(最小值和最大值) |
maximum()、minimum() | int | 获取最大值和最小值 |
[slot]setOrientation(Qt.Orientation) | None | 设置方向 |
orientation() | Qt.Orientation | 获取方向 |
setAlignment(Qt.Alignment) | None | 设置文本对齐方式 |
alignment() | Qt.Alignment | 获取文本对齐方式 |
setFormat(str) | None | 设置文本的格式 |
format() | str | 获取文本的格式 |
resetFormat() | None | 重置文本格式 |
setInverted Appearance(bool) | None | 设置外观是否反转 |
invertedAppearance() | bool | 获取外观是否反转 |
setTextDirection(QProgressBar.Direction) | None | 设置进度条文本的方向 |
textDirection() | QProgressBar.Direction | 获取进度条文本的方向 |
setTextVisible(bool) | None | 设置进度条文本是否可见 |
isTextVisible() | bool | 获取进度条文本是否可见 |
[slot]setValue(int) | None | 设置当前值 |
value() | int | 获取当前值 |
text() | Str | 获取文本 |
[slot]reset() | None | 重置进度条,返回初始位置 |
进度条控件QProgressBar的信号
进度条控件QProgressBar 只有一个信号 valueChanged(value;int),当值发生变化时发送该信号。
进度条控件QProgressBar例子
import sys
from PySide6.QtCore import QTimer
from PySide6.QtGui import Qt
from PySide6.QtWidgets import QWidget,QProgressBar,QPushButton,QApplication
class Window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("QProgressBar")
self.resize(500,500)
self.move(400,250)
self.setup_ui()
def setup_ui(self):
pb = QProgressBar(self)
pb.move(100,100)
timer = QTimer(pb)
def change_progress():
if pb.value()== pb.maximum():
timer.stop()
pb.setValue(pb.value()+ 1)
timer.timeout.connect(change_progress)
timer.start(500)
pb.valueChanged.connect(lambda val: print(f"当前进度值为{val}"))
if __name__ =="__main__":
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec())