将 RGBA 颜色代码 255,255,255,255 转换为 Kivy 颜色代码中的 1,1,1,1。

16
为了在kivy中指定任何颜色值,我们需要指定从0到1的值,即颜色默认为[1,1,1,1],可以包含0到1之间的值。然而,其他语言常用的rgba代码始终从0到255进行指定,我通常会通过任何网站链接引用它们,例如http://www.rapidtables.com/web/color/RGB_Color.htm
这在各种Python工具包中都有帮助,例如pyQt库,但在kivy中则不同。是否有人知道为什么它被指定为0到1,并且是否有任何方法将其他语言使用的值编码为kivy颜色代码。例如,如果我想将rgb(192,192,192)更改为kivy颜色代码,该怎么办?

您可以使用此页面https://www.colorhexa.com/00274d。只需要输入您想要的颜色的十六进制代码,然后您就可以使用出现在开头的RGB值。 - fairly_oddparents
8个回答

24

我认为你可以将其除以255:

float_color = color / 255.0

看起来它正在完成工作 :) - paarth batra

15

虽然这并不能真正回答问题,但另一种简单的方法是使用Kivy的十六进制功能。下面是kv语言的一个示例:

#:import hex kivy.utils.get_color_from_hex
    canvas:
        Color:
            rgba: hex('#03A9F4')

3
我想指出这个例子中的“COMMENT”并不是注释,而实际上定义了“hex”函数。 - Jonathan

8

如果他们也能在rgba中添加十六进制就太好了。 - BAS

5

请查看kivy.utils了解更多酷炫的功能,我发现一个简单的东西,在此之前我要去一个网站将十六进制转换为RGB十进制(因为我太懒了,不想每个rgb值都除以255)。

#:import utils kivy.utils <MainWindow>: Button: background_color: utils.get_color_from_hex('#58AE6F')

这种方法唯一的问题是无法输入透明度,如果您希望使用透明度,可以使用我提到的网站获取“rgb”的小数,并在“rgba”中将透明度的百分比作为“a”值使用。


2
您可以执行以下操作。
(**255**/255.0, **160**/255.0, **0**/255.0, 1)

所以你需要做的就是将RGB值除以255.0,这样上面的颜色将会给你橙色。所有带有**的数字都是你的RGB颜色。


1
正如你可以在这里看到的那样,在Kivy中,前三个数字只是重新缩放为0和1的RGB值,而最后一个数字是alpha。但请记住,您可以设置模式,您可以使用hsv代替,不过我猜您不需要那个。

0
我想在这里注册一种不太常见的方法,我认为更加有组织和清晰:定义一个颜色转换函数,您可以导入并在您的.kv文件中使用。
在一个func.py模块中定义您的函数。
# color convert
def cc(color):
    return color / 255

将其导入并在.kv文件中使用

#:import cc func.cc
   
<YourBuildClass>:
    BoxLayout:
        canvas:
            Color:
                rgb: 0, cc(102), cc(173)
            Rectangle:
                pos: self.pos
                size: self.size

0

将常规的rgba转换为kivy rgba

def krgb(r,g,b,a):
    return (r/255,g/255,b/255,int(a==255),)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接