В этом учебном пособии мы продолжим изучать Python Kivy, фреймворк для создания кроссплатформенных мобильных приложений с использованием языка программирования Python. На этот раз мы рассмотрим различные способы вывода виджетов на экран с помощью различных Layout-классов: BoxLayout, GridLayout и AnchorLayout.
BoxLayout – это простой способ организации виджетов в горизонтальную или вертикальную линию. Для создания BoxLayout вам нужно импортировать класс BoxLayout из модуля kivy.uix.boxlayout и добавить виджеты в него с помощью метода add_widget(). Например, давайте создадим простое горизонтальное расположение виджетов:
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
layout = BoxLayout(orientation='horizontal')
button1 = Button(text='Button 1')
button2 = Button(text='Button 2')
layout.add_widget(button1)
layout.add_widget(button2)
GridLayout – это более сложный способ организации виджетов в сетку с указанным количеством строк и столбцов. Для создания GridLayout вам нужно импортировать класс GridLayout из модуля kivy.uix.gridlayout и добавить виджеты в него с помощью метода add_widget(). Например, давайте создадим простую таблицу из трех строк и двух столбцов:
from kivy.uix.gridlayout import GridLayout
layout = GridLayout(cols=2, rows=3)
for i in range(1, 7):
button = Button(text=f'Button {i}')
layout.add_widget(button)
AnchorLayout – это способ выравнивания виджета по центру, верхнему, нижнему, левому или правому краю родительского виджета. Для создания AnchorLayout вам нужно импортировать класс AnchorLayout из модуля kivy.uix.anchorlayout и добавить виджет в него с помощью метода add_widget(). Например, давайте создадим виджет, выравненный по центру:
from kivy.uix.anchorlayout import AnchorLayout
layout = AnchorLayout()
button = Button(text='Centered Button')
layout.add_widget(button)
Теперь давайте объединим все три Layout-класса в единое приложение, чтобы продемонстрировать различные способы организации виджетов на экране:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.anchorlayout import AnchorLayout
class MyLayout(BoxLayout):
def __init__(self, **kwargs):
super(MyLayout, self).__init__(**kwargs)
box_layout = BoxLayout(orientation='vertical')
grid_layout = GridLayout(cols=2, rows=3)
for i in range(1, 7):
button = Button(text=f'Button {i}')
grid_layout.add_widget(button)
anchor_layout = AnchorLayout()
button = Button(text='Centered Button')
anchor_layout.add_widget(button)
box_layout.add_widget(grid_layout)
box_layout.add_widget(anchor_layout)
self.add_widget(box_layout)
class MyApp(App):
def build(self):
return MyLayout()
if __name__ == '__main__':
MyApp().run()
Этот пример создает приложение с горизонтальным BoxLayout в основе, содержащим GridLayout (таблицу из шести кнопок) и AnchorLayout (кнопку, выравненную по центру). Загрузите приложение на свое устройство с помощью buildozer и убедитесь, что виджеты корректно расположены на экране.
Это был обзор различных Layout-классов в Python Kivy для вывода виджетов на экран. Используйте их с умом, чтобы создавать красивые и удобные пользовательские интерфейсы для ваших мобильных приложений.
Спасибо. Отличное, подробное объяснение!
А где дальше?
Смотрю в 23м. Довольно интересно для начала, и познавательно. Твои уроки дополняю еще ответами от чатагпт, база получается очень интересная, спасибо.
А как ты виджеты в Фотошопе просматриваешь?
для курсовой нужно сделать ежедневник на питоне. пробовал в ткинтер, но вот за неделю до сдачи решил переделать в киви))) но не могу найти примеры похожих программ (блокнотов полно, но мне нужен именно ежедневник) и это сильно путает, я впервые делаю что-то круче типовых задачек ахаха
Отлично обьясняет. Учиться интересно. побольше бы таких курсов)
у меня на gridlayout и anchorLayout не появляются кнопки просто черное окно все написал правильно
Хауди, спасибо за уроки! Счастья любви здоровья…
для тех, кто уже знаком с python, большая часть информации очевидна.. я пошел читать текстовые материалы
озвучивается много информации, которую можно посмотреть в самой документации
А где можно посмотреть 6-й урок?
Научись пользоваться pycharm!
Знал бы я что python такой легкий в изучении да и фреймворки на него учить просто, не сидел бы на php и на его фреймворке yii2, а потом бы не тратил время на изучение c#, надо было учить сразу python убив бы этим всех зайцев сразу и web и desctop и mobil приложения делал бы на изи)))
Блиин, почему ты не сказал, что в строке
if _name_ == '__main__':
MyApp().run()
надо вводить именно '' main'' , а не название файла? Я часа 4 не мог понять, в чем дело
Почему не используешь язык разметки киви?!
у меня не открывается окно на киви
дизлайк
слишком много говоришь, мной было потрачено 31 минута на просмотр и я так и не знаю как заставить kivy рисовать квадрат!
грид прям бутстрап какой-то) удобно, хорошая тема лучше, чем ткинтер, и qt который у меня даже не работал. Kiwi is a must have for everyone
да, сейчас не особо актуально тут писать, но чел, ща намного лучше гутаришь)
23:12