В этом уроке мы рассмотрим использование KivyMD – библиотеки, которая предоставляет набор готовых виджетов для создания приложений с помощью фреймворка Kivy.
- Установка KivyMD:
Для начала необходимо установить KivyMD. Для этого откройте терминал и выполните следующую команду:
pip install kivymd
- Импорт модулей:
После установки KivyMD, необходимо импортировать необходимые модули в вашем приложении. Вот как это можно сделать:
from kivymd.app import MDApp
from kivymd.uix.label import MDLabel
from kivymd.uix.button import MDRaisedButton
- Создание приложения:
Создадим простое приложение, в котором будут находиться кнопка и надпись. Для этого необходимо создать класс, который будет наследоваться от класса 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('Кнопка была нажата!')
- Запуск приложения:
Для того чтобы запустить приложение, необходимо создать объект класса DemoApp и вызвать его метод run():
if __name__ == '__main__':
DemoApp().run()
- Дополнительные возможности:
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
- Заключение:
KivyMD – отличное расширение к фреймворку Kivy, которое позволяет создавать более красивые и функциональные приложения. Надеюсь, этот урок поможет вам начать использовать KivyMD в ваших проектах. Спасибо за внимание!
А есть возможность заполнять таблицу? то есть пустая табилца, куда пользователь будет сам записыать данные
Даа, с Material Design красиво получается, писал немного на андроид студио и до MD руки так и не дошли, а наверно зря, класно получается
Народ не тратьте время, мануал устарел.
у кого выдает ошибку после того как вы все сделали как в видео, надо переместить ваши файлы Builder.load_file в class MyApp(MDApp): в метод def build(self):
По установке ничего не понятно. В роде все установилось, но строка from kivy.theming import ThemeManager подчеркивается красным.
Ну это всё про интерфейсные возможности. Которые, надо сказать, воображения не поражают. А теперь любопытно узнать, как приложение на python'e под андроид дает возможность доступа к файловой системе и аппаратуре. Если вообще дает..
Успешно установил KivyMD и все равно получаю ошибку ModuleNotFoundError: No module named 'kivymd'
(((
Скажу честно, всё что есть в kivy MD, модно сделать и в обычном kivy. Но это лишь моё мнение, и спасибо за Ваш труд!
Спасибо большое за качественную серию!
А как очистить поле ввода ???
Пробовал повторить, но как я понял произошли изиенения с импортом 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 импортировать ???
Олег, здравствуйте!
Не могли бы вы сделать ролик про использование сервисов на андроид, в частности, про работающее в фоне приложение?
Олег, доброго вам здоровья!
Больше года прошло. Когда будет продолжение?
Хочется 'второй сезон' по Kivy!
А почему это в KivyMD 0.104.1 не работает ???
Круто!!! а можешь выпустить что то навроди Kivy & KivyMD для чайников. А еще вопрос можно в MDTextField
размер шрифта поменять??
#:import MDLabel kivymd.label.MDLabel
Олег, есть вопрос. Могу ли я в проекте Kivy для андроида использовать библиотеки Python? Есть ли ограничения? Например мне нужно написать приложение, которое будет качать почту из одного ящика и пересылать в другой после определенной обработки.
Даешь ещё уроки !!!
Такс. Мне нужно написать простое мобильное приложение за два дня. "Надо на 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
Здравствуйте, делаю все как на видео.На ПК работает,но когда запускаю на телефоне приложение вылетает