Cambiando el color de fondo de un botón en Kivy

Soy nuevo en Kivy y tengo problemas para especificar el color de fondo de un botón. Aquí está mi ejemplo simple:

# 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() 

Y el archivo kv adjunto custombutton.kv :

 #:kivy 1.7.2 : 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" 

Estoy seguro de que me estoy perdiendo algo obvio, pero he estado jugando con esto por más de una hora y sin llegar a ningún lado. El botón parece colorearse con un toque de rojo muy oscuro:

introduzca la descripción de la imagen aquí

¿No es esta la manera de especificar el color de fondo para un botón en Kivy?

¡Gracias!

Ah, esto es una confusión común. El problema es que Button.background_color realmente funciona como un tipo de tinte , no solo como un color de bloque. Como el fondo predeterminado es una imagen gris (la que normalmente ves si haces un botón sin estilo), lo que terminas viendo es un tinte rojo en esa imagen gris, que aparece como el rojo oscuro que observas.

Puede obtener el comportamiento que desea al reemplazar la imagen de fondo por solo una que es blanca (no tiene que ser más que unos pocos píxeles), o al jugar con las propiedades background_normal y background_down . Cuando tu color de fondo tiñe la nueva imagen en blanco puro, obtienes el rojo puro que buscas.

Supongo que esto no está tan claro en los documentos, intentaré mejorarlo.

Ha pasado un tiempo desde que se publicó por primera vez, así que tal vez con las actualizaciones se les ocurrió una mejor solución:

 Button: background_normal: '' background_color: 1, .3, .4, .85 

Como el botón tiene un gris predeterminado, agregar color de fondo solo teñirá el botón. Al establecer background_normal en “”, se restablece el valor predeterminado a blanco. Desde el canvas en blanco, el color de fondo funciona como cabría esperar.

Documentación

1) https://kivy.org/docs/api-kivy.uix.button.html?highlight=button#module-kivy.uix.button