qpainter 渐变进度条
时间: 2024-01-11 10:19:58 浏览: 23
以下是使用QPainter实现渐变进度条的代码示例:
```python
from PyQt5.QtWidgets import QApplication, QWidget, QProgressBar
from PyQt5.QtGui import QPainter, QBrush, QLinearGradient
from PyQt5.QtCore import Qt
class MyProgressBar(QProgressBar):
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing) # 抗锯齿
painter.setPen(Qt.NoPen) # 无边框
painter.fillRect(self.rect(), Qt.white) # 填充白色背景
# 设置渐变色
gradient = QLinearGradient(0, 0, self.width(), 0)
gradient.setColorAt(0.0, Qt.red)
gradient.setColorAt(0.5, Qt.yellow)
gradient.setColorAt(1.0, Qt.green)
painter.setBrush(QBrush(gradient))
# 计算进度条的宽度
progress_width = int(self.width() * self.value() / self.maximum())
# 绘制进度条
painter.drawRect(0, 0, progress_width, self.height())
if __name__ == '__main__':
app = QApplication([])
window = QWidget()
window.resize(400, 100)
progress_bar = MyProgressBar(window)
progress_bar.setGeometry(20, 20, 360, 60)
progress_bar.setRange(0, 100)
progress_bar.setValue(50)
window.show()
app.exec_()
```