【问题标题】:How to Get Value of Pie Slice on double Click in PyQtChart如何在 PyQtChart 中双击获取饼图的值
【发布时间】:2020-11-27 05:59:35
【问题描述】:

当我点击圆环图的切片时,我想得到饼切片的值。我们怎样才能实现它?我想将 slice 的值存储在一个变量中。请让我知道您的想法或建议。

from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
from PyQt5.QtChart import QChart, QChartView, QPieSeries, QPieSlice
from PyQt5.QtGui import QPainter, QPen, QFont
from PyQt5.QtCore import Qt

class Window(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("DonutChart Example")
        self.setGeometry(100,100, 400,600)
        self.create_donutchart()

    def create_donutchart(self):

        series = QPieSeries()
        series.setHoleSize(0.35)
        series.append("Protein 4.2%", 4.2)

        slice = QPieSlice()
        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.legend().hide()
        chart.addSeries(series)

        chart.setAnimationOptions(QChart.SeriesAnimations)
        chart.setTitle("DonutChart Example")
        chart.setTheme(QChart.ChartThemeBlueCerulean)

        chartview = QChartView(chart)
        chartview.setRenderHint(QPainter.Antialiasing)

        self.setCentralWidget(chartview)



App = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(App.exec_())

【问题讨论】:

    标签: python pyqt5 pyqtchart


    【解决方案1】:

    您必须使用发送按下的QPieSliceQPieSeriesdoubleClicked 信号,并且从该QPieSeries 中您可以提取所需的信息:

    class Window(QMainWindow):
        def __init__(self):
            super().__init__()
            self.setWindowTitle("DonutChart Example")
            self.setGeometry(100,100, 400,600)
            self.create_donutchart()
    
        def create_donutchart(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.legend().hide()
            chart.addSeries(series)
    
            chart.setAnimationOptions(QChart.SeriesAnimations)
            chart.setTitle("DonutChart Example")
            chart.setTheme(QChart.ChartThemeBlueCerulean)
    
            chartview = QChartView(chart)
            chartview.setRenderHint(QPainter.Antialiasing)
    
            self.setCentralWidget(chartview)
    
            series.doubleClicked.connect(self.handle_double_clicked)
    
        def handle_double_clicked(self, slice):
            print(slice.label(), slice.value())

    【讨论】:

    • 谢谢大佬!!!你真棒!!!!你有什么博客或者什么东西可以让初学者学习吗?
    • 是否可以将此图表嵌入到 QFrame 中?
    猜你喜欢
    • 2020-11-29
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多