Уроки Kivy #6: Как использовать KivyMD

Posted by


В этом уроке мы рассмотрим использование KivyMD – библиотеки, которая предоставляет набор готовых виджетов для создания приложений с помощью фреймворка Kivy.

  1. Установка KivyMD:
    Для начала необходимо установить KivyMD. Для этого откройте терминал и выполните следующую команду:
pip install kivymd
  1. Импорт модулей:
    После установки KivyMD, необходимо импортировать необходимые модули в вашем приложении. Вот как это можно сделать:
from kivymd.app import MDApp
from kivymd.uix.label import MDLabel
from kivymd.uix.button import MDRaisedButton
  1. Создание приложения:
    Создадим простое приложение, в котором будут находиться кнопка и надпись. Для этого необходимо создать класс, который будет наследоваться от класса MDApp:
class DemoApp(MDApp):
    def build(self):
        label = MDLabel(text="Привет, мир!", halign="center")
        button = MDRaisedButton(text="Нажми меня", pos_hint={'center_x': 0.5, 'center_y': 0.5})
        button.bind(on_press=self.on_button_click)
        return label, button

    def on_button_click(self, instance): 
        print('Кнопка была нажата!')
  1. Запуск приложения:
    Для того чтобы запустить приложение, необходимо создать объект класса DemoApp и вызвать его метод run():
if __name__ == '__main__':
    DemoApp().run()
  1. Дополнительные возможности:
    KivyMD предоставляет множество готовых виджетов, таких как кнопки, текстовые поля, списки и многое другое. Вы можете использовать эти виджеты для создания более интересных и функциональных приложений.

Например, вы можете добавить текстовое поле и список в свое приложение:

from kivymd.uix.textfield import MDTextField
from kivymd.uix.list import MDList, OneLineListItem

class DemoApp(MDApp):
    def build(self):
        label = MDLabel(text="Привет, мир!", halign="center")
        button = MDRaisedButton(text="Нажми меня", pos_hint={'center_x': 0.5, 'center_y': 0.5})
        text_field = MDTextField(hint_text="Введите текст", pos_hint={'center_x': 0.5, 'center_y': 0.4})

        list_view = MDList()
        list_view.add_widget(OneLineListItem(text="Элемент списка 1"))
        list_view.add_widget(OneLineListItem(text="Элемент списка 2"))

        return label, button, text_field, list_view
  1. Заключение:
    KivyMD – отличное расширение к фреймворку Kivy, которое позволяет создавать более красивые и функциональные приложения. Надеюсь, этот урок поможет вам начать использовать KivyMD в ваших проектах. Спасибо за внимание!
0 0 votes
Article Rating
39 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@user-xg4pd7en9d
2 months ago

А есть возможность заполнять таблицу? то есть пустая табилца, куда пользователь будет сам записыать данные

@Sergey-cz7ym
2 months ago

Даа, с Material Design красиво получается, писал немного на андроид студио и до MD руки так и не дошли, а наверно зря, класно получается

@glock-1758
2 months ago

Народ не тратьте время, мануал устарел.

@yestoday92
2 months ago

у кого выдает ошибку после того как вы все сделали как в видео, надо переместить ваши файлы Builder.load_file в class MyApp(MDApp): в метод def build(self):

@WolfKrugerr
2 months ago

По установке ничего не понятно. В роде все установилось, но строка from kivy.theming import ThemeManager подчеркивается красным.

@babkinandrew5678
2 months ago

Ну это всё про интерфейсные возможности. Которые, надо сказать, воображения не поражают. А теперь любопытно узнать, как приложение на python'e под андроид дает возможность доступа к файловой системе и аппаратуре. Если вообще дает..

@danilon2283
2 months ago

Успешно установил KivyMD и все равно получаю ошибку ModuleNotFoundError: No module named 'kivymd'
(((

@CAHCrawlAdaptHide
2 months ago

Скажу честно, всё что есть в kivy MD, модно сделать и в обычном kivy. Но это лишь моё мнение, и спасибо за Ваш труд!

@vladimerbamin1070
2 months ago

Спасибо большое за качественную серию!

@Sergey_Derin
2 months ago

А как очистить поле ввода ???

@Yaros75
2 months ago

Пробовал повторить, но как я понял произошли изиенения с импортом KiviMD и данный пример теперь надо как-то модифицировать. Пишут надо изменить наследование на from kivymd.app import MDApp -> class MyApp(MDApp): и отключить импорт в MD файле, но и это тоже не помогло, ругается App object must be inherited from `kivymd.app.MDApp, может TextInput, Label и Button в main.py теперь тоже из KiviMD импортировать ???

@KillRealKill
2 months ago

Олег, здравствуйте!
Не могли бы вы сделать ролик про использование сервисов на андроид, в частности, про работающее в фоне приложение?

@devZu9
2 months ago

Олег, доброго вам здоровья!
Больше года прошло. Когда будет продолжение?
Хочется 'второй сезон' по Kivy!

@user-oo1fq3pu8l
2 months ago

А почему это в KivyMD 0.104.1 не работает ???

@user-oo1fq3pu8l
2 months ago

Круто!!! а можешь выпустить что то навроди Kivy & KivyMD для чайников. А еще вопрос можно в MDTextField
размер шрифта поменять??

@llxweber
2 months ago

#:import MDLabel kivymd.label.MDLabel

@xx113355
2 months ago

Олег, есть вопрос. Могу ли я в проекте Kivy для андроида использовать библиотеки Python? Есть ли ограничения? Например мне нужно написать приложение, которое будет качать почту из одного ящика и пересылать в другой после определенной обработки.

@Seimurnet
2 months ago

Даешь ещё уроки !!!

@azamuray
2 months ago

Такс. Мне нужно написать простое мобильное приложение за два дня. "Надо на Kivy" – сразу подумал я, хоть и не знал этот фреймворк. Решил поискать какой-нибудь мини курс. Наткнулся на курс от Олега Молчанова. Того самого Олега, которого я советую всем, кто начинает учить Python. "Круто!" – подумал я и приступил к просмотру. И по окончании могу сказать, что это топ. Я бы даже сказал, что это лучшее, что мне удалось найти по Kivy.

А еще хотелось бы помочь тем, кто в 2020-ом году пытается изучить Kivy по этим видеоурокам и под конец столкнулись с ошибкой по KivyMD (я тоже сталкивался).
В комментариях я так и не увидел, чтоб кто-то четко помог решить ее, поэтому постараюсь помочь:

В официальной документации KivyMD написано, что писать:
theme_cls = ThemeManager()
не нужно, это вызовет ошибку.

Замените код из файла main.py:
from kivy.app import App

class MyApp(App):

theme_cls = ThemeManager()

def build(self):
self.theme_cls.theme_style = 'Light'
return Container()

на следующий код:
from kivymd.app import MDApp

class MyApp(MDApp):

def build(self):
return Container()

Затем удалите код из файла .kv:
#:import MDLabel kivymd.label.MDLabel
#:import MDTextField kivymd.textfields.MDTextField
#:import MDRaisedButton kivymd.button.MDRaisedButton

И тогда все заработает.

P.S. KivyMD ставил через pip

@user-sb1hw3tw4u
2 months ago

Здравствуйте, делаю все как на видео.На ПК работает,но когда запускаю на телефоне приложение вылетает