📅  最后修改于: 2023-12-03 14:45:46.374000             🧑  作者: Mango
介绍一款使用PyQt5实现的渐变色进度条的组件。该组件可以用于显示任务进度或者其他需要展示进度的场景,通过渐变色的效果增加进度条的视觉效果。
pip install pyqt5
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt5.QtGui import QPalette, QLinearGradient, QColor
from PyQt5.QtCore import Qt
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()
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实现渐变色进度条的介绍和使用示例。通过自定义的渐变色效果,可以优化进度条的可视化效果,提升用户体验。具体的参数和定制化能力可以根据实际需求进行调整和扩展。