Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Changing the background color of a Button in Kivy

Tags:

python

kivy

I'm new to Kivy and having trouble specifying the background color of a Button. Here's my simple example:

# custombutton.py  from kivy.app import App from kivy.uix.widget import Widget   class MyWidget(Widget):     pass   class CustomButtonApp(App):     def build(self):         return MyWidget()   if __name__ == '__main__':     CustomButtonApp().run() 

And the accompanying kv file custombutton.kv:

#:kivy 1.7.2  <MyWidget>:     canvas:         Color:             rgb: (0.93, 0.93, 0.93)         Rectangle:             pos: self.pos             size: self.size      Button:         center: self.parent.center         font_size: 14         height: 28         background_color: (1.0, 0.0, 0.0, 1.0)         text: "I'm a Button" 

I'm sure I'm missing something obvious, but I've been messing with this for over an hour now and getting nowhere. The button seems to get colored a hint of very dark red:

enter image description here

Is this not the way to specify the background color for a Button in Kivy?

Thanks!

like image 564
Fiver Avatar asked Nov 24 '13 21:11

Fiver


People also ask

How do I change the text color in KIVY?

[color=#<color>][/color] Change the text color.


1 Answers

Ah, this is a common confusion. The problem is that Button.background_color really works as a kind of tint, not just a block colour. Since the default background is a grey image (the one you normally see if you make an unstyled button), what you end up seeing is a red tint to that grey image - which comes out as the dark red you observe.

You can get the behaviour you want by replacing the background image to just one that's plain white (it doesn't have to be more than a few pixels), or by otherwise playing with the background_normal and background_down properties. When your background_color tints the new pure white image, you get the pure red you're after.

I guess this isn't so clear in the docs, I'll try to improve it.

like image 58
inclement Avatar answered Sep 17 '22 22:09

inclement