Python Kivy — как сделать кнопку с текстом и иконкой?

Здравствуйте, подскажите пожалуйста как можно сделать в кнопке рядом с текстом картинку/иконку?

Пробовал Button->StackLayout->Label+Image, но так как то не красиво получается, там уже отступ не от текста, а от области label.

А я бы хотел отцентрировать содержимое кнопки по центру, в которой будет какой-то текст и иконка рядом с маленьким отступом слева от текста.

Можно ли такое сделать на Python Kivy?
  • Вопрос задан
  • 4872 просмотра
Решения вопроса 1
@mcrack Автор вопроса
Всем привет, как обычно если сам не найдёшь ответ, ни кто не найдёт.

Придумал более менее интересный способ вставки шрифтовой иконки от Font Awesome в кнопку или в любое Label поле.

KV файл:
<Root>:
    BoxLayout:
        ButtonIcon:
            icon: "\uf2c2"
            ltext: "Text left"
            rtext: "Text right"
            text: root.iconText(self.icon, self.ltext, self.rtext)
            font_size: 25
            padding: 0.5, 0

<ButtonIcon@Button>:
    markup: True
    ltext: ""
    rtext: ""


main.py файл:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout

class Root(BoxLayout):
    def iconText(self, icon, ltext='', rtext=''):
        Ltext = ''
        if (ltext != ''):
            Ltext = "[font=Roboto]" + ltext + "[/font]  "
        Rtext = ''
        if (rtext != ''):
            Rtext = "  [font=Roboto]" + rtext + "[/font]"
        fontIcon = "[font=fonts/fontawesome-webfont.ttf]" + icon + "[/font]"
        text = Ltext + fontIcon + Rtext
        return text

class MyApp(App):
    def build(self):
        return Root()

if __name__ == "__main__":
    MyApp().run()


Нужно создать папку fonts и положить в него файл fontawesome-webfont.ttf с сайта Font Awesome.

PS:
Тут я использовал шрифты от версии 4.7.0, таким же способом можно прикрутить любые шрифтовые иконки

*******************************
Для более опытных:
Если придумаете более удобный способ вывода иконок в кнопках, буду очень благодарен, если поделитесь своим способом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@lightmanLP
Задушил питона
background_normal из Button

background_normal¶Added in 1.0.4
Background image of the button used for the default graphical representation when the button is not pressed.

background_normal is a StringProperty and defaults to ‘atlas://data/images/defaulttheme/button’.

https://kivy.org/doc/stable/api-kivy.uix.button.html
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы