AttributeError: у объекта 'QScatterSeries' нет атрибута 'points' - PullRequest
1 голос
/ 07 июля 2019

В значительной степени то, что говорит название У меня есть объект 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

питон 3.6.7

PyQt5 5.11.3

PyQtChart 5.11.3

1 Ответ

2 голосов
/ 07 июля 2019

Есть 2 похожих метода:

Какие концептуально 2 контейнера аналогичны списку, поэтому привязка (PyQt5 / PySide2) должна выбрать, какой из них использовать, если документы более подробно рассмотрены, можно заметить, что:

QList QXYSeries :: points () const

Возвращает точки в серии в виде списка. Используйте pointsVector () для лучшей производительности.

QVector QXYSeries :: pointsVector () const

Возвращает точки в серии как вектор. Это более эффективно, чем вызывать точки ().

Делается вывод, что наиболее целесообразным является использование 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)]
...