16. 进度条控件

一、进度条控件

  进度条控件控件主要显示任务的执行进度,PySide6 中提供了进度条控件(QProgressBar)。进度条控件通常在执行长时间任务时,用进度条告诉用户当前的进展情况。

  我们可以在终端中使用 pip 安装 pyside6 模块。

pip install pyside6

  用 QProgressBar 类创建实例对象的方法如下:

QProgressBar(parent:QWidget=None)

  其中,parent窗口 或者 容器 类控件。

  QProgressBar 类的常用方法及其说明如下:

# 实例方法
minimum() -> int                                            # 获取最小值
maximum() -> int                                            # 获取最大值
value() -> int                                              # 获取值
text() -> str                                               # 获取文本
orientation() -> Qt.Orientation                             # 获取方向
setAlignment(alignment:Qt.Alignment) -> None                # 设置对齐方式
alignment() -> Qt.Alignment                                 # 获取对齐方式
setFormat(format:str) -> None                               # 设置文本的格式
format() -> str                                             # 获取文本的格式
resetFormat() -> None                                       # 重置文本的格式
setInvertedAppearance(invert:bool) -> None                  # 设置外观是否反转
invertedAppearance() -> bool                                # 获取外观是否反转
setTextDirection(textDirection:Qt.TextDirection) -> None    # 设置进度条文本方向
textDirection() -> Qt.TextDirection                         # 获取进度条文本方向
setTextVisible(visible:bool) -> None                        # 设置进度条文本是否可见
isTextVisible() -> bool                                     # 获取进度条文本是否可见

# 槽函数
setMinimum(minimum:int) -> None                             # 设置最小值
setMaximum(maximum:int) -> None                             # 设置最大值
setRange(minimum:int, maximum:int) -> None                  # 设置范围
setValue(value:int) -> None                                 # 设置值
setOrientation(orientation:Qt.Orientation) -> None          # 设置方向
reset() -> None                                             # 重置进度条,返回初始位置

  用 setOrientation(Qt.Orientation) 方法可以设置进度条的方向,参数 Qt.Orientation 可以取 Qt.Orientation.HorizontalQt.Orientation.Vertical ;用 setTextDirection(QProgressBar.Direction) 方法设置进度条上文本的方向,参数 QProgressBar.Direction 可以取 QProgressBar.Direction.TopToBottomQProgressBar.Direction.BottomToTop,分别表示文本顺时针旋转 90° 和逆时针旋转 90°。设置文本在进度条上的对齐方式可以用 setAlignment(Qt.Alignment) 方法,如果 Qt.AlignmentQt.Alignment.AlignHCenter,文本将会放置到进度条的中间。

  用 setFormat(str) 方法设置显示的文字格式,在文字中 %p% 表示 百分比值%v 表示 当前值%m 表示 总数,默认显示的是 %p%;获取文本格式用 format() 方法;获取格式化的文本用 text() 方法。

  QProgressBar 控件中常用的信号及其说明如下:

valueChanged(value)        # 进度条的值发生改变时发射
import sys

from PySide6.QtWidgets import QApplication, QWidget
from PySide6.QtWidgets import QProgressBar
from PySide6.QtCore import QTimer, Qt

class MyWidget(QWidget):
    def __init__(self):
        # 1.调用父类Qwidget类的__init__()方法
        super().__init__()
        # 2.调用setupUi()方法初始化页面
        self.setup_ui()

        self.count = 0
        # 3.创建一个定时器对象
        self.timer = QTimer()
        # 4.启动定时器
        self.timer.start(1000)
        # 5.关联信号
        self.timer.timeout.connect(self.change_progressBar)

    def setup_ui(self):
        # 1.设置窗口对象大小
        self.resize(700, 500)

        # 2.创建进度条控件
        self.progressBar = QProgressBar(self)
        self.progressBar.resize(500, 30)

        # 3.设置进度条范围
        self.progressBar.setRange(0, 100)

        # 4.设置进度条的当前值
        self.progressBar.setValue(0)

        # 5.设置进度条的文字显示格式
        self.progressBar.setFormat("%v%")

        # 6.设置对齐方式
        self.progressBar.setAlignment(Qt.AlignmentFlag.AlignLeft)

        # 7.设置进度条的布局方向
        self.progressBar.setLayoutDirection(Qt.LayoutDirection.LeftToRight)

        # 8.设置进度条的显示方向
        self.progressBar.setOrientation(Qt.Orientation.Horizontal)

        # 9.设置进度条是否以反方向显示进度
        self.progressBar.setInvertedAppearance(False)

        # 10.设置进度条文本显示方向
        self.progressBar.setTextDirection(QProgressBar.Direction.TopToBottom)

        # 11.获取进度条的最小值,最大值,当前值
        print(self.progressBar.minimum(), self.progressBar.maximum(), self.progressBar.value())

        # 12.定义信号与槽的连接
        self.progressBar.valueChanged.connect(self.valueChanged)

    def change_progressBar(self):
        self.count += 1
        if self.count <= 100:
            self.progressBar.setValue(self.count)
        else:
            self.count = 0
            self.progressBar.reset()

    def valueChanged(self, value):
        print("进度条的值改变了,当前值为:", value)

if __name__ == "__main__":
    # 1.创建一个QApplication类的实例
    app = QApplication(sys.argv)
    # 2.创建一个窗口
    window = MyWidget()
    # 3.展示窗口
    window.show()
    # 4.进入程序的主循环并通过exit()函数确保主循环安全结束
    sys.exit(app.exec())

如果最小值和最大值都设置为 0,那么进度条会显示为一个不断循环滚动的繁忙状态;

posted @   星光映梦  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示