标题说的差不多。我有一个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 ...


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


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

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

python 3.6.7

PyQt5 5.11.3

PyQtChart 5.11.3

最佳答案

有2种类似的方法:


QList<QPointF> QXYSeries::points() const
QVector<QPointF> QXYSeries::pointsVector() const


从概念上讲,这是两个类似于list的容器,因此binding(PyQt5 / PySide2)必须选择使用哪个容器,如果对文档进行了更详细的检查,则会发现:


  QList QXYSeries::points() const
  以列表形式返回系列中的点。使用pointsVector()获得更好的性能。
  
  QVector QXYSeries::pointsVector() const
  以向量的形式返回系列中的点。这比调用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)]

08-20 02:31