PySide6 实现环形进度条
时间: 2024-05-14 11:12:50 浏览: 101
环形进度条实现
以下是使用 PySide6 实现环形进度条的示例代码:
```python
import sys
from PySide6.QtCore import Qt, QTimer
from PySide6.QtGui import QPainter, QColor, QPen
from PySide6.QtWidgets import QApplication, QWidget
class CircularProgressBar(QWidget):
def __init__(self):
super().__init__()
self._progress = 0
self._timer = QTimer(self)
self._timer.timeout.connect(self.updateProgress)
self._timer.start(50)
self.setWindowTitle("Circular Progress Bar")
self.setFixedSize(200, 200)
self.show()
def updateProgress(self):
self._progress += 1
if self._progress > 100:
self._progress = 0
self.update()
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
pen = QPen()
pen.setWidth(10)
pen.setColor(QColor("#1E90FF"))
painter.setPen(pen)
painter.drawArc(20, 20, 160, 160, 0, self._progress * 3.6 * 16)
if __name__ == "__main__":
app = QApplication(sys.argv)
progress_bar = CircularProgressBar()
sys.exit(app.exec())
```
在上面的代码中,CircularProgressBar 类继承自 QWidget 类,它包含了一个 QTimer 对象,用于定时更新进度条的值,并实现了 updateProgress() 和 paintEvent() 方法。
updateProgress() 方法简单地增加进度条的值,并在值达到 100 后将其重置为 0。
paintEvent() 方法绘制了一个圆弧,表示当前进度。圆弧的起始角度为 0,结束角度为当前进度乘以 3.6(即一度的角度)乘以 16(表示 1/16 的精度)。
运行上面的代码,将会看到一个环形的进度条,每隔 50 毫秒更新一次进度。
阅读全文