【问题标题】:AttributeError: 'QScatterSeries' object has no attribute 'points'AttributeError:“QScatterSeries”对象没有属性“点”
【发布时间】:2019-07-07 19:57:18
【问题描述】:

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

【问题讨论】:

    标签: python pyqt pyqt5 qchart


    【解决方案1】:

    类似的方法有2种:

    从概念上讲,这两个容器类似于列表,因此绑定(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)]
    

    【讨论】:

    • QList QXYSeries::points() const 是 QScatterSeries 所缺少的。看起来 pointsVector() 会起作用。我不知何故错过了那个
    • @JWebster 并非所有方法/类都由 PyQt 映射,很多时候是因为它根本无法映射,而其他一些因为有更好的选择,在这种情况下 pointsVector() 比 points() 更有效在 Python 的情况下两者生成相同,在 C++ 的情况下,它们的内存管理不同。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 2012-12-01
      • 2021-04-19
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多