AttributeError: 'PySide2.QtWidgets.QGraphicsView' object has no attribute 'setChart'
时间: 2023-06-23 12:54:10 浏览: 263
开发errorjsp-手把手带你入门ssh项目
这个错误提示说明 `QGraphicsView` 类型的对象没有 `setChart()` 方法,因为这个方法是 `QChartView` 类型的对象所特有的。
如果你想在 `QGraphicsView` 中显示图表,可以将 `QChartView` 对象作为子控件添加到 `QGraphicsView` 中,然后设置 `QChart` 对象。示例代码如下:
```python
from PySide2.QtWidgets import QGraphicsView, QGraphicsScene, QWidget, QVBoxLayout
from PySide2.QtCharts import QtCharts
class ChartView(QGraphicsView):
def __init__(self, parent=None):
super().__init__(parent)
self.setRenderHint(QPainter.Antialiasing) # 抗锯齿
# 创建 QGraphicsScene 对象
scene = QGraphicsScene(self)
self.setScene(scene)
# 创建 QChartView 对象
chartView = QtCharts.QChartView(self)
chartView.setRenderHint(QPainter.Antialiasing) # 抗锯齿
scene.addWidget(chartView)
# 设置 QChart 对象
chart = QtCharts.QChart()
chart.setTitle("Chart Title")
chartView.setChart(chart)
```
在上面的代码中,我们创建了一个 `ChartView` 类,继承自 `QGraphicsView`。在 `ChartView` 的构造函数中,我们先创建了一个 `QGraphicsScene` 对象,并将其设置为 `QGraphicsView` 的场景。然后,我们创建了一个 `QChartView` 对象,并将其添加到场景中。最后,我们创建了一个 `QChart` 对象,并将其设置为 `QChartView` 的图表。
你可以将 `ChartView` 对象添加到任何需要显示图表的窗口中,例如:
```python
class MainWindow(QWidget):
def __init__(self):
super().__init__()
layout = QVBoxLayout(self)
layout.addWidget(ChartView())
```
在上面的代码中,我们创建了一个 `MainWindow` 类,继承自 `QWidget`,并在其中添加了一个 `ChartView` 对象。你可以将 `MainWindow` 对象显示出来,就可以看到图表了。
阅读全文