跳转至

Progress 进度条与进度环

用于展示操作进度或当前状态的百分比。MonkeyQt 提供了两种进度显示方式:

  • MkProgressBar:线形进度条
  • MkProgressRing:环形进度条

MkProgressBar 线形进度条

基础用法

进度条预览

from monkeyqt import MkProgressBar

# 默认基础进度条progress = MkProgressBar(percentage=50)

属性与 API

属性名称 类型 默认值 说明
percentage int 0 进度百分比,可选值 0-100
status str "normal" 进度条状态,可选值为 "normal", "success", "warning", "exception"
stroke_width int 6 进度条的宽度(像素)
show_text bool True 是否显示进度文字
text_inside bool False 进度文字是否内置在进度条内部(需将 stroke_width 设置足够大,例如 18

MkProgressRing 环形进度条

基础用法

进度环预览

from monkeyqt import MkProgressRing

# 默认基础进度环ring = MkProgressRing(percentage=75, status="success")

属性与 API

属性名称 类型 默认值 说明
percentage int 0 进度百分比,可选值 0-100
status str "normal" 状态,可选值为 "normal", "success", "warning", "exception"
stroke_width int 6 进度环的线条宽度
width int 120 整个进度环的宽度/高度尺寸
show_text bool True 是否显示中间的进度文字

示例代码

以下示例展示了不同状态和样式的进度条与进度环 &

import sys
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout
from monkeyqt import MkProgressBar, MkProgressRing

class ProgressDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Progress Demo")
        self.resize(400, 300)

        layout = QVBoxLayout(self)
        layout.setSpacing(20)

        # 1. 各种状态的进度条        bar_layout = QVBoxLayout()
        bar_layout.addWidget(MkProgressBar(percentage=30, status="normal"))
        bar_layout.addWidget(MkProgressBar(percentage=70, status="success"))
        bar_layout.addWidget(MkProgressBar(percentage=90, status="warning", stroke_width=10))
        bar_layout.addWidget(MkProgressBar(percentage=100, status="exception", stroke_width=12))

        # 文字内显进度条        bar_layout.addWidget(MkProgressBar(percentage=80, stroke_width=18, text_inside=True, status="success"))
        layout.addLayout(bar_layout)

        # 2. 各种状态的进度环        ring_layout = QHBoxLayout()
        ring_layout.addWidget(MkProgressRing(percentage=25, status="normal", width=80))
        ring_layout.addWidget(MkProgressRing(percentage=50, status="success", width=80))
        ring_layout.addWidget(MkProgressRing(percentage=75, status="warning", width=80))
        ring_layout.addWidget(MkProgressRing(percentage=100, status="exception", width=80))
        layout.addLayout(ring_layout)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = ProgressDemo()
    window.show()
    sys.exit(app.exec())