2013-06-30 55 views
9

Kivyでは画像ファイル名の代わりにボタンの背景として画像オブジェクトを渡す方法はありますか?Kivyのボタンの背景として画像オブジェクトを渡す

button.background_normalプロパティは文字列のみを受け入れます。 allow_stretch = Falseなどの画像プロパティをカスタマイズしたいと思います。

成功した場合、ボタン内でイメージの配置を指定するにはどうすればいいですか?左上揃えにするには?

+0

んKivy 1.6に存在しません –

答えて

12

ソースはButtonの単なるプロパティであり、指摘したとおりの文字列です。あなたはウィジェットをウィジェットの中に入れたいと思っています。それがKivyの基本的な仕組みです。それで、そのままImageを追加してください。少しのポジショニングが残りの作業を行います。

位置決めには注意が必要です。それが目に見える部分にあり、何もそれを覆っていないことを確認してください。ボタンの後にLabelを使用しています。なぜなら、透明なColorを持っているからです。あなたはそれを試すことができます。たとえば、ポジショニングが間違っている場合は(x:0 y:0を試してください)、ラベル領域の左下隅にあるボタンが表示されます。

私が使用していた画像がKivy logo次のとおりです。

toto_ticoの答えに加えて
from kivy.app import App 
from kivy.uix.boxlayout import BoxLayout 
from kivy.lang import Builder 

Builder.load_string(""" 
<ButtonsApp>: 
    orientation: "vertical" 
    Button: 
     text: "B1" 
     Image: 
      source: 'kivy.png' 
      y: self.parent.y + self.parent.height - 250 
      x: self.parent.x 
      size: 250, 250 
      allow_stretch: True 
    Label: 
     text: "A label" 
""") 

class ButtonsApp(App, BoxLayout): 
    def build(self): 
     return self 

if __name__ == "__main__": 
    ButtonsApp().run() 
+0

ありがとう、それは素晴らしい作品です。私は何とかウィジェットはレイアウトウィジェットにしか追加できないと思っていました。私は他のウィジェットの上に追加できることに気づいていませんでした。 – blablatros

+0

この例はhttp://kivy.org/docs/api-kivy.uix.button.htmlに含まれていなければならないと思います。背景画像を設定する唯一の方法は 'background_normal'のように見えるからです。 – martin

+0

なぜ、 'Ìmage'の下にある' pos_hint:{"center_x":0.5、 "center_y":0.5,5} 'は動作しませんか? – Nearoo

7

、あなたはとボタンの中央に画像を見つけることができます:ちょうどallow_stretchに注意することが

Button: 
    id: myButton 
    Image: 
     source: "./buttonImage.PNG" 
     center_x: self.parent.center_x 
     center_y: self.parent.center_y 
関連する問題