我想设置一个全局对象“ view”,它具有一个类方法 我该如何实现?
我使用
V = View(self)
V = View(QGraphicsView)
V = View()
全部失败
当我使用第三种类型时,编译器消息:
__init__() missing 1 required positional argument: 'parent'
以下是我班上要打电话的东西:
class View(QGraphicsView):
def __init__(self, parent):
QGraphicsView.__init__(self, parent)
self.setScene(QGraphicsScene(self))
self.setSceneRect(QRectF(self.viewport().rect()))
def mousePressEvent(self, event):
if can_draw == 1 :
self._start = event.pos()
def mouseReleaseEvent(self, event):
if can_draw == 1:
start = QPointF(self.mapToScene(self._start))
end = QPointF(self.mapToScene(event.pos()))
self.scene().addItem(
QGraphicsLineItem(QLineF(start, end)))
答案 0 :(得分:0)
通过编写def __init__(self, parent):
,您可以强制视图具有父级。
Qt小部件不必具有父级(当您使用setParent()
,布局等将小部件添加到另一个小部件时,它会自动设置)。
您可以通过编写def __init__(self, parent=None):
向 parent 参数添加默认值。
然后,使用V = View()
答案 1 :(得分:0)
实例化类时,不能在__init__
中包含一个参数。
您将必须:
class View(QGraphicsView):
def __init__(self):
QGraphicsView.__init__(self, parent)
self.setScene(QGraphicsScene(self))
self.setSceneRect(QRectF(self.viewport().rect()))
def mousePressEvent(self, event):
if can_draw == 1 :
self._start = event.pos()
def mouseReleaseEvent(self, event):
if can_draw == 1:
start = QPointF(self.mapToScene(self._start))
end = QPointF(self.mapToScene(event.pos()))
self.scene().addItem(
QGraphicsLineItem(QLineF(start, end)))
然后您将通过
实例化它v = View()
然后您就可以访问它的方法