使用PyQt5绘制三角形

时间:2015-10-13 02:22:33

标签: python python-3.x pyqt5

我有一个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)

有没有人知道我需要做什么来渲染三角形?我很乐意提供更多必要的代码。

1 个答案:

答案 0 :(得分:0)

所以我找到了答案。原来我发送给我的TriangleItem的点是null - 修复它,我替换了

TrianglePts.append(Points2[indexW].scenePos())

TrianglePts.append(QtCore.QPointF(Points2[indexW].x + 10, Points2[indexW].y + 10))