通过pyqt5做一个圆形水波纹进度条,同时可以在qt desinger显示出来
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar
from PyQt5.QtCore import Qt
class CircleProgressBar(QProgressBar):
def __init__(self, parent=None):
super().__init__(parent)
self.setRange(0, 100)
self.setAlignment(Qt.AlignCenter)
self.setFormat("%p%")
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
# 绘制圆形进度条背景
painter.save()
painter.setPen(Qt.NoPen)
painter.setBrush(self.palette().alternateBase())
rect = self.rect().adjusted(1, 1, -1, -1)
painter.drawEllipse(rect)
painter.restore()
# 绘制圆形进度条
painter.save()
painter.setPen(Qt.NoPen)
brush = self.palette().highlight()
value = self.value()
start_angle = 90
span_angle = -360 * value / 100
painter.setBrush(brush)
painter.drawPie(rect, start_angle * 16, span_angle * 16)
painter.restore()
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("Circle Progress Bar")
progress_bar = CircleProgressBar(window)
window.show()
sys.exit(app.exec_())