Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基维:为什么我不能改变矩形的颜色?_Python_Kivy - Fatal编程技术网

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

Python 基维:为什么我不能改变矩形的颜色?,python,kivy,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!

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

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)
用作工具提示的标签,其中还有一行指向工具提示项。上述版本生成此输出:

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

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

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

Windows.add_widget(label)

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

您正在将一个列表
[]
传递给
Color()
,而
Color
需要至少3个参数rgb、rgba、rgb+模式或rgba+模式

试试这个:

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

,实际上,我无法更改任何颜色。(例如,文本或指向文本的线条)我不太确定出了什么问题,但为什么要这样做呢?为什么不在画布上画出你的矩形呢?之前?画布是哪个小部件的?将工具提示添加到全局窗口的原因是:它浮动在所有窗口小部件之上,并且可以与其他窗口小部件重叠。在屏幕截图中,您可以看到它与其他几个小部件重叠。为此,必须将其添加到全局窗口。标签的画布。它是标签的画布。@nagylzs没有多少人面临这个问题,因为在kv语言中,颜色接受所有、列表甚至元组