I think you can just divide it by 255:
float_color = color / 255.0
题
In order to specify any color value in kivy we need to specify values from 0 to 1 i.e. color defaults to [1,1,1,1] and can contain values between 0 and 1 , however rgba codes which are readily available for other languages are always specified from 0 to 255 and i usually refer them from any web link as in http://www.rapidtables.com/web/color/RGB_Color.htm
This helps even in various python toolkits example pyQt library however in kivy its different .
Does anyone know why its specified from 0 to 1 and if there s any way to code values used by various other languages to kivy color codes . for example what if i want to change rgb(192,192,192) to kivy color code ?
解决方案
I think you can just divide it by 255:
float_color = color / 255.0
其他提示
Though this doesnt really answer the question, but another simple way is using kivy's hex feature , an example in kv lang:
#:import hex kivy.utils.get_color_from_hex
canvas:
Color:
rgba: hex('#03A9F4')
To avoid some divisions and speed up:
Check out kivy.utils for more cool features, found this easy thing, before this I used to go to a site for converting hex to decimal rgb( coz I am too lazy to divide each rgb value by 255.
#:import utils kivy.utils
<MainWindow>:
Button:
background_color: utils.get_color_from_hex('#58AE6F')
The only issue with this approach is that you can't enter transparency, if you wish to use transparency you can very well use the site I mentioned to get decimals for 'rgb' and using percentage of transparency as 'a' value in 'rgba'.
You can do the following.
(**255**/255.0, **160**/255.0, **0**/255.0, 1)
So what you need to do is divide your RGB value with 255.0, so the above color will give you orange. All the numbers that have ** will be your RBG Colors.
As you can see here, in Kivy the first three numbers are just re-scaled RGB values to 0 and 1, and the last one is alpha
. But remember you can set the mode, you could use hsv
instead, not I guess you don't need that.
convert from regular rgba to kivy rgba
def krgb(r,g,b,a):
return (r/255,g/255,b/255,int(a==255),)
I would like to register here a less conventional method, which I think is more organized and clean: Define a color converting function that you can import and use in your .kv
file.
Define your function in a func.py
module
# color convert
def cc(color):
return color / 255
Import it and use it in the .kv
file
#:import cc func.cc
<YourBuildClass>:
BoxLayout:
canvas:
Color:
rgb: 0, cc(102), cc(173)
Rectangle:
pos: self.pos
size: self.size