PyQt6-Charts环形图动画设置报错:QChart无SeriesAnimations属性
解决PyQt6 QChart动画设置的AttributeError问题
你遇到的AttributeError是因为**SeriesAnimations不是QChart实例的属性**,它属于QChart.AnimationOption枚举类,必须通过枚举类来引用。
另外你的代码里还有个隐性问题:self.label未初始化就直接添加到布局,运行时会触发另一个报错,需要提前创建该QLabel实例。
修复后的完整代码如下:
from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel, QVBoxLayout, QWidget from PyQt6.QtCharts import QChart, QChartView, QPieSeries from PyQt6.QtGui import QPainter from PyQt6.QtCore import Qt class MainWindow(QMainWindow): def __init__(self, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.setWindowTitle("Temperature Chart Example") self.setMinimumSize(800, 600) # 初始化label,解决未定义问题 self.label = QLabel("温度环形图展示") self.label.setAlignment(Qt.AlignmentFlag.AlignCenter) series = QPieSeries() # 当前温度 series.append("Current Temperature", 30) # 剩余温度 series.append("Remaining Temperature", 70) # 设置环形图内径比例 series.setHoleSize(0.6) chart = QChart() chart.addSeries(series) chart.setTitle("Current Temperature") # 修正动画选项引用方式:使用QChart.AnimationOption枚举 chart.setAnimationOptions(QChart.AnimationOption.SeriesAnimations) chart.legend().setVisible(True) chart_view = QChartView(chart) chart_view.setRenderHint(QPainter.RenderHint.Antialiasing) # 创建布局容纳图表和标签 layout = QVBoxLayout() layout.addWidget(chart_view) layout.addWidget(self.label) # 创建中心部件承载布局 central_widget = QWidget() central_widget.setLayout(layout) # 设置窗口中心部件 self.setCentralWidget(central_widget) app = QApplication([]) window = MainWindow() window.show() app.exec()
关键修改点:
- 将
chart.setAnimationOptions(chart.SeriesAnimations)改为chart.setAnimationOptions(QChart.AnimationOption.SeriesAnimations) - 在初始化阶段添加
self.label的创建与配置,解决未定义报错
内容的提问来源于stack exchange,提问作者zeroalpha
相关产品推荐
相关产品推荐

