Je suis nouveau sur Kivy et j'ai du mal à spécifier la couleur d'arrière-plan d'un bouton. Voici mon exemple 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()
Et le fichier kv qui l'accompagne 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"
Je suis sûr que je manque quelque chose d'évident, mais je joue avec ça depuis plus d'une heure maintenant et je n'arrive à rien. Le bouton semble prendre une teinte de rouge très foncé:
N'est-ce pas la façon de spécifier la couleur d'arrière-plan d'un bouton dans Kivy?
Merci!
Ah, c'est une confusion courante. Le problème est que Button.background_color
fonctionne vraiment comme une sorte de teinte, pas seulement une couleur de bloc. Étant donné que l'arrière-plan par défaut est une image grise (celle que vous voyez normalement si vous faites un bouton sans style), ce que vous finissez par voir est une teinte rouge de cette image grise - qui apparaît comme le rouge foncé que vous observez.
Vous pouvez obtenir le comportement que vous souhaitez en remplaçant l'image d'arrière-plan par une image entièrement blanche (elle ne doit pas dépasser quelques pixels), ou en jouant autrement avec le background_normal
et background_down
Propriétés. Lorsque votre background_color teinte la nouvelle image d'un blanc pur, vous obtenez le rouge pur que vous recherchez.
Je suppose que ce n'est pas si clair dans les documents, je vais essayer de l'améliorer.
Cela fait un moment que cela n'a pas été publié pour la première fois, alors peut-être qu'avec les mises à jour, ils ont trouvé une meilleure solution:
Button:
background_normal: ''
background_color: 1, .3, .4, .85
Étant donné que le bouton a un gris par défaut, l'ajout de couleur d'arrière-plan ne fera que teinter le bouton. En définissant background_normal sur '', la valeur par défaut est réinitialisée sur blanc. À partir de la toile blanche, background_color fonctionne comme prévu.
Documentation
1) https://kivy.org/docs/api-kivy.uix.button.html?highlight=button#module-kivy.uix.button