这是一个应该绘制标签画布的方法:
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)
Run Code Online (Sandbox Code Playgroud)
用作工具提示的标签,其中还有一条线指向工具提示项。上面的版本产生以下输出:
如果我在红色行之后注释掉矩形指令,则会显示:
请注意,文本的标签渲染了两次,因为我还添加了 Rectangle(texture=self.texture) 指令,但这仅用于测试。
通过这个简单的调用,标签本身被添加到窗口中:
Windows.add_widget(label)
Run Code Online (Sandbox Code Playgroud)
问题是:为什么我的矩形不是红色的?(实际上我希望它是半透明的。)
您正在将一个列表传递给[],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)
Run Code Online (Sandbox Code Playgroud)
如果你想要一个半透明的矩形,将 rgba 更改为1,0,0,.5