- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用计算欧几里德距离的方法创建我的类 Point。 Point类继承自QPointF类。但是当执行像 add 或 mul 这样的操作时,结果不是 Point 类,而是 QPointF。如何修复它?我应该覆盖所有魔术方法还是有其他解决方案?
from PyQt5.QtCore import QPointF
class Point(QPointF):
def __init__(self, *args, **kwargs):
super(QPointF, self).__init__(*args, **kwargs)
def dist(self):
return (self._p.x() * self._p.x() +
self._p.y() * self._p.y()) ** 0.5
a = Point(1, 2)
b = Point(2, 3)
print(a + b, type(a + b))
>> PyQt5.QtCore.QPointF(3.0, 5.0) <class 'PyQt5.QtCore.QPointF'>
最佳答案
是的,您必须覆盖方法__add__
、__mul__
和__repr__
:
from PyQt5.QtCore import QPointF
class Point(QPointF):
def dist(self):
return (self._p.x() * self._p.x() + self._p.y() * self._p.y()) ** 0.5
def __add__(self, other):
return self.__class__(super(self.__class__, self).__add__(other))
def __mul__(self, other):
return self.__class__(super(self.__class__, self).__mul__(other))
def __repr__(self):
return "{}({}, {})".format(self.__class__.__name__, self.x(), self.y())
if __name__ == '__main__':
a = Point(1, 2)
b = Point(2, 3)
print(a, type(a))
print(b, type(b))
print(a + b, type(a + b))
a += Point(10, 10)
print(a, type(a))
a += QPointF(10, 10)
print(a, type(a))
print(a*3, type(a*3))
print("a: {}".format(a))
l = [a, b]
print(l)
关于python - 创建自定义类QPointF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55244480/
在我的图表中,我需要在每个QPointF中存储很多信息,但是当我子类QPointF时,它似乎没有效果,有人可以给我好的吗解决方案或想法? 代码是: from PyQt5.QtGui import *
我有一个自定义的二维点类型,它有一个模板转换运算符: struct MyPoint { double x, y; template operator T() const
QList markers; markers.append (QPointF (getLat (), getLon ())); QList :: iterator i; for (i = mark
我有一个 widget在 myWidget 的中心我用了 mousePressEvent()在 myWidget抓取鼠标按下事件。我要隐藏myWidget在鼠标按下时而不是在 widget 内部按下时
我需要从 QSqlTableModel 复制两列并放入 QVector。 我正在尝试这个: ParameterData pd; QSqlTableModel *m = mapTbModels.valu
我有一些点列表,存储在 QList 中 但现在我想在 opencv 中将 QPointF 转换为 Point。我该怎么做。 最佳答案 QPointF 默认保存 x 和 y 值作为 double,而 o
我想知道如何将 QPointf 位置转换为 PyQt 中的 QPoint 位置,因为我需要使用项目的位置来设置鼠标位置。我一直在尝试这个,但没有任何反应: xq=node.pos().x() yq=
我有一个 QChartView,它显示一些 2D 点,每个点代表一个特定项目 我想用项目名称标记每个点,而不是用它的 x、y 坐标作为默认行为 有什么方法可以实现覆盖创建或渲染标签的功能? 最佳答案
我是一名优秀的程序员,十分优秀!