Объединение изображения и текста в кнопке в kivy
каков предпочтительный способ объединения изображения / значка и текста внутри кнопки? Например, как бы вы создали кнопку с text = 'my button'
, и графический значок слева от этого текста?
1 ответов
относительно вопроса №2.
то, как Kivy работает встраивание Widget
экземпляров. С Image
и Button
являются подклассами виджет, то все, что вам нужно сделать, это вставить изображение внутри кнопки. Обратите внимание, что расположение внутри виджета фиксировано. Вы должны дать явные координаты.
тем не менее, вы всегда можете вставить Layout
чтобы организовать материал, который вы кладете внутри кнопки.
вот простой ex
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 - 200
x: self.parent.x
Label:
text: "A label"
""")
class ButtonsApp(App, BoxLayout):
def build(self):
return self
if __name__ == "__main__":
ButtonsApp().run()
EDIT: пример того, как относительный макет может быть встроен в кнопку
в этом случае я использую StackLayout
организовать Image
и a Label
внутри. Как я уже сказал,--4--> это Widget
и Kivy работает встраивание виджетов внутри виджетов. Не имеет значения, являются ли они ярлыками, кнопками или макетами.
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_string("""
<ButtonsApp>:
orientation: "vertical"
Button:
StackLayout:
pos: self.parent.pos
size: self.parent.size
orientation: 'lr-tb'
Image:
source: 'kivy.png'
size_hint_x: None
width: 74
Label:
size_hint_x: None
width: 100
text: "The text"
Label:
text: "A label"
""")
class ButtonsApp(App, BoxLayout):
def build(self):
return self
if __name__ == "__main__":
ButtonsApp().run()