kivy:为什么我不能改变矩形的颜色?

时间:2017-11-12 15:12:10

标签: python kivy

这是一个应该绘制标签画布的方法:

def update_canvas(self):
    c = self.canvas.after
    c.clear()
    with c:
        Color([1, 1, 1, 1])
        Line(points=[self.point_from, self.point_to])
        if self.texture:
            Color([1, 0, 0, 1]) # RED RECTANGLE!
            Rectangle(pos=self.pos, size=self.size)
            Color([1, 1, 1, 1])
            Rectangle(pos=self.pos, texture=self.texture, size=self.texture.size)

用作工具提示的标签,其中还有一条指向工具提示项的行。上面的版本产生了这个输出:

enter image description here

如果我在RED COLOR行之后注释掉Rectangle指令,则会显示:

enter image description here

请注意,文本的标签会呈现两次,因为我还添加了一个Rectangle(texture = self.texture)指令,但这只是用于测试。

通过这个简单的调用将标签本身添加到窗口中:

enter code here Windows.add_widget(标签)

问题是:为什么我的矩形不是红色的? (实际上我希望它是半透明的。)

1 个答案:

答案 0 :(得分:1)

您要将列表[]传递给Color(),而Color至少需要3个参数rgb,rgba,rgb + mode或rgba + mode

试试这个:

def update_canvas(self):
    c = self.canvas.after
    c.clear()
    with c:
        Color(1, 1, 1, 1)
        Line(points=[self.point_from, self.point_to])
        if self.texture:
            Color(1, 0, 0, 1) # RED RECTANGLE!
            Rectangle(pos=self.pos, size=self.size)
            Color(1, 1, 1, 1)
            Rectangle(pos=self.pos, texture=self.texture, size=self.texture.size)

如果您想要半透明矩形,请将rgba更改为1,0,0,.5