📜  PyQt5 - 渐变色进度条(1)

📅  最后修改于: 2023-12-03 14:45:46.374000             🧑  作者: Mango

PyQt5 - 渐变色进度条

介绍一款使用PyQt5实现的渐变色进度条的组件。该组件可以用于显示任务进度或者其他需要展示进度的场景,通过渐变色的效果增加进度条的视觉效果。

功能特点
  • 可自定义进度条的最小值和最大值
  • 可自定义进度条的当前值
  • 可自定义进度条的渐变色效果
  • 支持反向进度(从右到左或者从下到上)
如何使用
  1. 安装依赖:
pip install pyqt5
  1. 导入所需模块:
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt5.QtGui import QPalette, QLinearGradient, QColor
from PyQt5.QtCore import Qt
  1. 创建自定义进度条组件类:
class GradientProgressBar(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.setMinimumSize(200, 30)
        self.setMaximumSize(400, 30)
        self._min_value = 0
        self._max_value = 100
        self._current_value = 0
        self._reverse = False

    def paintEvent(self, event):
        palette = self.palette()
        painter = QtGui.QPainter(self)
        painter.setRenderHint(QtGui.QPainter.Antialiasing)
        gradient = QLinearGradient(0, 0, self.width(), 0)
        gradient.setSpread(QGradient.ReflectSpread)

        if not self._reverse:
            gradient.setColorAt(0, QtGui.QColor(0, 120, 255))
            gradient.setColorAt(1, QtGui.QColor(0, 190, 255))
        else:
            gradient.setColorAt(0, QtGui.QColor(0, 190, 255))
            gradient.setColorAt(1, QtGui.QColor(0, 120, 255))

        painter.fillRect(0, 0, (self.width() / (self._max_value - self._min_value)) * self._current_value, self.height(), gradient)
        painter.setPen(Qt.NoPen)
        painter.drawRect(0, 0, self.width(), self.height())

        painter.end()
  1. 创建主窗口类并使用自定义进度条:
class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        layout = QVBoxLayout()
        progress_bar = GradientProgressBar()
        progress_bar.setMinValue(0)
        progress_bar.setMaxValue(100)
        progress_bar.setCurrentValue(50)
        layout.addWidget(progress_bar)
        self.setLayout(layout)

if __name__ == '__main__':
    app = QApplication([])
    main_window = MainWindow()
    main_window.show()
    app.exec()
效果演示

下面是使用自定义渐变色进度条的效果演示:

渐变色进度条效果

以上便是使用PyQt5实现渐变色进度条的介绍和使用示例。通过自定义的渐变色效果,可以优化进度条的可视化效果,提升用户体验。具体的参数和定制化能力可以根据实际需求进行调整和扩展。