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语言中,颜色接受所有、列表甚至元组