web-dev-qa-db-ja.com

Kivyでボタンの背景色を変更する

私はKivyを初めて使用し、ボタンの背景色を指定するのに苦労しています。これが私の簡単な例です:

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

そして、付随するkvファイル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"

私は明らかな何かを見逃していると確信していますが、私はこれを1時間以上いじっていてどこにも行きませんでした。ボタンは非常に濃い赤のヒントで色付けされているようです:

enter image description here

これは、Kivyでボタンの背景色を指定する方法ではありませんか?

ありがとう!

21
Fiver

ああ、これはよくある混乱です。問題はそれです Button.background_colorは、ブロックカラーだけでなく、実際にはtintの一種として機能します。デフォルトの背景は灰色の画像(スタイルのないボタンを作成すると通常表示される画像)であるため、最終的に表示されるのはその灰色の画像の赤い色合いです-濃い赤で表示されます。

背景画像を無地の白(数ピクセル以上である必要はありません)だけに置き換えるか、またはbackground_normalおよびbackground_down プロパティ。 background_colorが新しい純白の画像に色を付けると、目的の純赤が得られます。

これはドキュメントではそれほど明確ではないと思いますが、改善しようと思います。

26
inclement

これが最初に投稿されてからしばらく経っているので、おそらく更新により、より良い解決策が思い付きました:

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

ボタンにはデフォルトのグレーがあるため、背景色を追加してもボタンの色合いは変わりません。 background_normalを ''に設定すると、デフォルトが白にリセットされます。白いキャンバスから、background_colorは期待どおりに機能します。

ドキュメント

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

14
Taylor D