#!/usr/bin/env python # coding: utf-8 # Reference # https://doc.qt.io/qt-6/qtcharts-donutchart-example.html import sys from PySide6.QtCharts import ( QChart, QChartView, QPieSeries, ) from PySide6.QtCore import Qt from PySide6.QtGui import QPainter from PySide6.QtWidgets import ( QApplication, QMainWindow, ) class DonutChart(QChartView): def __init__(self): super().__init__() chart = self.init_ui() self.setChart(chart) self.setRenderHint(QPainter.Antialiasing) def init_ui(self): series = QPieSeries() series.setHoleSize(0.35) series.append("Protein 4.2%", 4.2) slice = series.append("Fat 15.6%", 15.6) slice.setExploded() slice.setLabelVisible() series.append("Other 23.8%", 23.8) series.append("Carbs 56.4%", 56.4) chart = QChart() chart.addSeries(series) chart.setTitle('Donut with a lemon glaze (100g)') chart.setAnimationOptions(QChart.SeriesAnimations) chart.legend().setVisible(True) chart.legend().setAlignment(Qt.AlignBottom) return chart class Example(QMainWindow): def __init__(self): super().__init__() donutchart = DonutChart() self.setCentralWidget(donutchart) self.resize(550, 300) self.setWindowTitle('DonutChart') def main(): app = QApplication(sys.argv) ex = Example() ex.show() sys.exit(app.exec()) if __name__ == '__main__': main()