部分填充的椭圆

时间:2018-11-24 11:21:19

标签: python pyqt pyqt5 ellipse

我目前正在GraphicScene上绘制椭圆:

pen = QtGui.QPen(QtGui.QColor(QtCore.Qt.lightGray).darker(50))
for id, light in arrLights.iteritems():
    angle = i*delta
    circX = (w + x) * math.cos(angle)
    circY = (h + y) * math.sin(angle)
    item = callbackEllipse(light, hiveLight, circX, circY, w, h)
    item.setAcceptHoverEvents(True)
    item.setPen(pen)

    if (light["status"]):
        brush = QtGui.QBrush(QtGui.QColor(QtCore.Qt.lightGray))
    else:
        brush = QtGui.QBrush(QtGui.QColor(QtCore.Qt.lightGray).darker(150))

    item.setBrush(brush)
    self.scene().addItem(item)
    self.writeText(light['name'], circX , circY, w, h)
    i = i + 1

(callbackEllipse是一个具有父类QGraphicsEllipseItem的类,用于鼠标单击事件)

我正在尝试找出如何部分填充这些椭圆(基于百分比),如下图所示:

椭圆

椭圆

椭圆

我已经搜索并尝试了一些操作,例如多个椭圆和绘制的路径,但是这影响了点击事件,并且丢失了“未填充”椭圆部分的边界。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

在这些情况下,有必要实现一个自定义项并覆盖paint方法,请使用QGraphicsEllipseItem作为基础,因为它足以添加百分比属性和填充颜色,如果要对其进行重新绘制,则必须调用{ {1}}。对于绘画,创建2个QPixmap,第一个绘制矩形,第二个绘制椭圆,然后使用compositionMode将它们连接起来

update()

enter image description here