我有一个QGraphicsScene
,我试图通过QGraphicsPolygonItem
添加一个三角形。
class MainScene(QtWidgets.QGraphicsScene):
def __init__(self, *args, parent=None):
self.brush = QtGui.QBrush('94c3e4')
QtWidgets.QGraphicsScene.__init__(self, parent, *args)
self.setBackgroundBrush(QtGui.QBrush(QtGui.QColor.fromRgb(209, 233, 249)))
....
## run every time a point is selected to become part of a triangle
TrianglePts.append(Points2[indexW].scenePos())
Points2[indexW].greenSelect()
if len(TrianglePts) == 3:
print(TrianglePts)
triangle = TriangleItem(QtGui.QPolygonF(TrianglePts))
self.addItem(triangle)
class TriangleItem(QtWidgets.QGraphicsPolygonItem):
def __init__(self, polygon, parent=None):
QtWidgets.QGraphicsPolygonItem.__init__(self, polygon, parent)
self.setBrush(QtGui.QBrush(QtGui.QColor.fromRgb(249, 245, 209)))
由于某种原因,永远不会渲染三角形。我做类似于渲染点的操作,似乎有效。这是自定义类:
class VertexItem(QtWidgets.QGraphicsEllipseItem):
def __init__(self, x, y, parent=None):
self.x = x
self.y = y
QtWidgets.QGraphicsEllipseItem.__init__(self,parent)
self.setRect(x, y, 20, 20)
#self.setFlags(QtWidgets.QGraphicsItem.ItemIsMovable)
#self.setFlags(QtWidgets.QGraphicsItem.ItemIsSelectable)
#self.setFlags(QtWidgets.QGraphicsItem.ItemIsMovable)
self.setAcceptHoverEvents(True)
有没有人知道我需要做什么来渲染三角形?我很乐意提供更多必要的代码。
答案 0 :(得分:0)
所以我找到了答案。原来我发送给我的TriangleItem的点是null - 修复它,我替换了
TrianglePts.append(Points2[indexW].scenePos())
与
TrianglePts.append(QtCore.QPointF(Points2[indexW].x + 10, Points2[indexW].y + 10))