2013-06-30 2 views
9

В Kivy есть ли способ передать объект изображения в качестве фона кнопки, а не имени файла изображения?Передача объекта изображения в качестве фона кнопки в Kivy

button.background_normal Недвижимость принимает только строки. Я хотел бы настроить свойства изображения, такие как allow_stretch = False.

Если это удается, как можно указать выравнивание изображения внутри кнопки, например. для выравнивания по левому краю?

+0

Просто к сведению allow_stretch делает не существует в Kivy 1.6 –

ответ

12

Источник - это свойство Button, и это строка, как вы указали. Вам нужен виджет внутри виджета, и это основной способ работы Киви. Так что просто добавьте изображение как есть. Немного позиционирования сделают все остальное.

Вы должны быть осторожны с позиционированием. Удостоверьтесь, что он в видимой части, и ничего не покрывает его. Я использую надпись после кнопки, потому что она имеет прозрачный цвет, чтобы вы могли экспериментировать с ним. Например, если ваше позиционирование неверно (попробуйте x:0 y:0), вы можете увидеть кнопку, идущую в нижний левый угол в области этикеток.

Изображение Я использую это Kivy logo:

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

Почему 'pos_hint: {" center_x ": 0.5," center_y ": 0,5}' под 'Ìmage' не работает? – Nearoo

7

В дополнение к ответу toto_tico, вы можете найти изображение в центре кнопки как:

Button: 
    id: myButton 
    Image: 
     source: "./buttonImage.PNG" 
     center_x: self.parent.center_x 
     center_y: self.parent.center_y 
Смежные вопросы