📜  PyQt5 - 进度条的彩色边框(1)

📅  最后修改于: 2023-12-03 15:18:47.242000             🧑  作者: Mango

PyQt5 - 进度条的彩色边框

在 PyQt5 中,我们可以使用 QProgressBar 实现进度条功能。默认情况下,进度条的边框是灰色的,但我们可以通过自定义样式来实现彩色边框。

实现方法

我们可以通过设置进度条的样式表来改变边框颜色。样式表是一种用于设置控件外观的语言,类似于 CSS。以下是设置样式表的方法:

progress_bar = QProgressBar()
progress_bar.setStyleSheet("""
QProgressBar {
    border: 2px solid gray;
    border-radius: 5px;
    text-align: center;
}

QProgressBar::chunk {
    background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1,
                                      stop:0 #FF0050, stop:1 #FF50A8);
    border-radius: 5px;
}
""")

上述代码中,我们设置了两个样式表:

  1. QProgressBar:设置了进度条的边框样式,包括颜色和圆角。
  2. QProgressBar::chunk:设置了进度条已完成部分的样式,包括颜色和圆角。

background-color 参数可以使用 qlineargradient 函数来实现渐变颜色。该函数有四个参数,分别为开始点坐标和结束点坐标的 X、Y 值。stop 参数表示渐变颜色的分界点,可以设置多个。

完整示例

以下是一个完整的 PyQt5 程序,实现了一个带有彩色边框的进度条:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QProgressBar
from PyQt5.QtCore import QBasicTimer
from PyQt5.QtGui import QColor

class ProgressBar(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.progress_bar = QProgressBar()

        self.timer = QBasicTimer()
        self.step = 0

        hbox = QHBoxLayout()
        hbox.addWidget(self.progress_bar)
        self.setLayout(hbox)

        self.setWindowTitle('Progress Bar')
        self.setGeometry(300, 300, 300, 50)

        self.show()

    def timerEvent(self, event):
        if self.step >= 100:
            self.timer.stop()
            return

        self.step += 1
        self.progress_bar.setValue(self.step)

    def start(self):
        self.timer.start(100, self)

        self.progress_bar.setMinimum(0)
        self.progress_bar.setMaximum(0)
        self.progress_bar.setTextVisible(False)
        self.progress_bar.setFixedSize(300, 50)

        self.progress_bar.setStyleSheet("""
        QProgressBar {
            border: 2px solid gray;
            border-radius: 5px;
            text-align: center;
        }

        QProgressBar::chunk {
            background-color: qlineargradient(x1:0, y1:0, x2:1, y2:1,
                                              stop:0 #FF0050, stop:1 #FF50A8);
            border-radius: 5px;
        }
        """)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = ProgressBar()
    ex.start()
    sys.exit(app.exec_())

该程序实现了一个带有彩色边框的进度条控件,并在启动时显示了一个动态增长的进度条。

以上便是本文介绍的内容,希望对大家有帮助。