1

和标题说的差不多。我有一个 QScatterSeries 对象。我可以将数据加载到其中并将其添加到 QChart,但是如果我尝试使用类似...

from PyQt5.QtChart import QScatterSeries
from PyQt5.QtCore import QPointF

my_scatter_series.points = QScatterSeries()
my_scatter_series.points.append(QPointF(1.0,3.0))
my_scatter_series.points.append(QPointF(2.0,5.0))
my_scatter_series.points.append(QPointF(4.0,7.0))
point_list = my_scatter_series.points()

我得到一个属性错误...

AttributeError:“QScatterSeries”对象没有属性“点”

points() 绝对是 QXYSeries 中的一种方法,QScatterSeries 扩展了它,所以这应该是我可以做的事情,不是吗?

https://doc.qt.io/qt-5/qscatterseries-members.html

蟒蛇 3.6.7

PyQt5 5.11.3

PyQtChart 5.11.3

4

2 回答 2

2

有2种类似的方法:

从概念上讲,这两个容器类似于列表,因此绑定(PyQt5/PySide2)必须选择使用它们中的哪一个,如果更详细地查看文档,则观察到:

QList QXYSeries::points() 常量

将系列中的点作为列表返回。使用 pointsVector() 以获得更好的性能。

QVector QXYSeries::pointsVector() 常量

将系列中的点作为向量返回。这比调用 points() 更有效。

得出结论,最合适的就是使用pointsVector(),这样就是解决方案:

from PyQt5.QtChart import QScatterSeries
from PyQt5.QtCore import QPointF

my_scatter_series = QScatterSeries()
my_scatter_series.append(QPointF(1.0, 3.0))
my_scatter_series.append(QPointF(2.0, 5.0))
my_scatter_series.append(QPointF(4.0, 7.0))
point_list = my_scatter_series.pointsVector()
print(point_list)

输出:

[PyQt5.QtCore.QPointF(1.0, 3.0), PyQt5.QtCore.QPointF(2.0, 5.0), PyQt5.QtCore.QPointF(4.0, 7.0)]
于 2019-07-07T20:59:58.690 回答
0

我遇到了同样的问题。我的解决方案是从 PyQt5 切换到 PySide2,然后问题就解决了。

于 2020-04-03T08:08:57.133 回答