web-dev-qa-db-fra.com

Changer la couleur d'arrière-plan d'un bouton dans Kivy

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é:

enter image description here

N'est-ce pas la façon de spécifier la couleur d'arrière-plan d'un bouton dans Kivy?

Merci!

21
Fiver

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.

26
inclement

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

14
Taylor D