Reputation: 1402
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 ?
Upvotes: 16
Views: 31020
Reputation: 1
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
Upvotes: 0
Reputation: 41
convert from regular rgba to kivy rgba
def krgb(r,g,b,a):
return (r/255,g/255,b/255,int(a==255),)
Upvotes: 0
Reputation: 117
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.
Upvotes: 2
Reputation: 3768
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'.
Upvotes: 5
Reputation: 1100
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')
Upvotes: 15
Reputation: 1092
To avoid some divisions and speed up:
http://www.corecoding.com/utilities/rgb-or-hex-to-float.php
Upvotes: 8