2013-11-24 55 views
9

私は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" 

今私は私が何かを明らかに欠けていると確信しているが、私は時間を超えるため、このをいじってきましたどこにも行きません。ボタンは非常に暗い赤のヒントを色付け取得するようだ:

enter image description here

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

ありがとうございます!

答えて

13

ああ、これはよくある混乱です。問題は、Button.background_colorが、ブロックカラーだけでなく、ティントの種類として実際に機能することです。デフォルトの背景は灰色の画像(通常、あなたが非構造化ボタンを作った場合に表示されるもの)なので、最終的に見えるものは、その灰色のイメージへの赤みです。

背景画像を白い部分(わずか数ピクセルである必要はありません)に置き換えるか、それ以外の場合はbackground_normalbackground_downのプロパティで再生できます。あなたのbackground_colorが新しい純粋な白のイメージを着色するとき、あなたは後になっている純粋な赤を得る。

これはドキュメントではあまり明確ではないと思いますが、私はそれを改善しようとします。これが最初のアップデートでので、多分に投稿されましたので、

+0

おかげで、これは動作します。境界線の色を指定するのはどうですか? – Fiver

+0

私は実際にどのように国境の仕掛けが働くのかよく分かりません。私は自分のウィジェットのキャンバスに直接頂点命令(Lineなど)を持つ自分の単純な境界線を描画したことがあります。 – inclement

+0

'background_normal'と' background_down'画像にボーダーを追加することができます:http://stackoverflow.com/questions/19005182/rounding-button-corners-in-kivy。画像は、[css border-image](http://css-tricks.com/understanding-border-image/)と同様の9のグリッドで分割されています。あなたはコーナーが一致することを確認する必要があります。 –

2

は、それは彼らがより良い解決策を考え出したしばらくしている:ボタンは、デフォルトのグレーを持って

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

関連する問題