Передача объекта изображения в качестве фона кнопки в Kivy



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



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



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

936   2  

2 ответов:

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

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

Изображение, которое я использую, - это логотип Kivy :

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

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

Button:
    id: myButton
    Image:
        source: "./buttonImage.PNG"
        center_x: self.parent.center_x
        center_y: self.parent.center_y

Comments

    Ничего не найдено.