.kv 文件中的 RGB 和条件指令

aPy*_*ney 2 kivy

所以我一直在开发一个应用程序,并尝试在 kv 中使用条件 kv 指令,如here所述。

<myWidget@Widget>:
    size: self.parent.width-self.height*0.5, self.parent.height/12
    selected: False
    canvas:
        Color: 
            rgb: 1,1,0 if self.selected else 1,1,1
        Rectangle:
            pos: self.pos
            size: self.parent.width-self.height*0.5, self.parent.height/12
Run Code Online (Sandbox Code Playgroud)

我的问题是我不理解 rgb 行为:虽然本示例中的颜色工作正常(选择时变为黄色,未选择时变为白色),但其他颜色组合会产生不可预测的颜色,或者根本没有结果。

有人可以向我解释 rgb 属性实际发生了什么吗?

inc*_*ent 5

这被解析为(1, 1, (0 if self.selected else 1), 1, 1),这显然不是您想要的,但(如您所见)恰好适用于黄色/白色。试试吧

rgb: (1,1,0) if self.selected else (1,1,1)
Run Code Online (Sandbox Code Playgroud)