Передача объекта изображения в качестве фона кнопки в Kivy
В Kivy есть ли способ передать объект изображения в качестве фона кнопки вместо имени файла изображения?
button.background_normal свойство принимает только строки. Я хотел бы настроить свойства изображения, такие как allow_stretch = False.
Если это удастся, как я могу указать выравнивание изображения внутри кнопки, например. чтобы он был выровнен по левому верху?
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