代码之家  ›  专栏  ›  技术社区  ›  nagylzs

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

  •  4
  • nagylzs  · 技术社区  · 8 年前

    下面是一种绘制标签画布的方法:

    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

    如果我注释掉红色线后的矩形指令,则会显示:

    enter image description here

    请注意,文本的标签被渲染两次,因为我还添加了一个矩形(texture=self.texture)指令,但这仅用于测试。

    标签本身通过以下简单调用添加到窗口:

    Windows.add_widget(label)
    

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

    1 回复  |  直到 6 年前
        1
  •  3
  •   Simon Mengong    8 年前

    您正在传递一个列表 [] Color() 虽然 Color

    试试这个:

    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