Learning Python Kivy #2 – Displaying widgets (BoxLayout, GridLayout, AnchorLayout)

Posted by


В этом учебном пособии мы продолжим изучать 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 для вывода виджетов на экран. Используйте их с умом, чтобы создавать красивые и удобные пользовательские интерфейсы для ваших мобильных приложений.

0 0 votes
Article Rating
20 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
@_mrmark
2 months ago

Спасибо. Отличное, подробное объяснение!

@Musoev-br4iv
2 months ago

А где дальше?

@OtherSide_kr129
2 months ago

Смотрю в 23м. Довольно интересно для начала, и познавательно. Твои уроки дополняю еще ответами от чатагпт, база получается очень интересная, спасибо.

@Sergeyxxx-fn3px
2 months ago

А как ты виджеты в Фотошопе просматриваешь?

@usermeowblue
2 months ago

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

@leowinch8828
2 months ago

Отлично обьясняет. Учиться интересно. побольше бы таких курсов)

@user-ng4ou5mb5w
2 months ago

у меня на gridlayout и anchorLayout не появляются кнопки просто черное окно все написал правильно

@atar_kusx
2 months ago

Хауди, спасибо за уроки! Счастья любви здоровья…

@frostbearer
2 months ago

для тех, кто уже знаком с python, большая часть информации очевидна.. я пошел читать текстовые материалы

@frostbearer
2 months ago

озвучивается много информации, которую можно посмотреть в самой документации

@artsirenko7076
2 months ago

А где можно посмотреть 6-й урок?

@bpavuk
2 months ago

Научись пользоваться pycharm!

@user-qv4bj2kt7c
2 months ago

Знал бы я что python такой легкий в изучении да и фреймворки на него учить просто, не сидел бы на php и на его фреймворке yii2, а потом бы не тратил время на изучение c#, надо было учить сразу python убив бы этим всех зайцев сразу и web и desctop и mobil приложения делал бы на изи)))

@user-ti9st9wh4f
2 months ago

Блиин, почему ты не сказал, что в строке
if _name_ == '__main__':

MyApp().run()
надо вводить именно '' main'' , а не название файла? Я часа 4 не мог понять, в чем дело

@TheRouqs
2 months ago

Почему не используешь язык разметки киви?!

@cyberboy5699
2 months ago

у меня не открывается окно на киви
дизлайк

@redlag4225
2 months ago

слишком много говоришь, мной было потрачено 31 минута на просмотр и я так и не знаю как заставить kivy рисовать квадрат!

@romanbush5164
2 months ago

грид прям бутстрап какой-то) удобно, хорошая тема лучше, чем ткинтер, и qt который у меня даже не работал. Kiwi is a must have for everyone

@grushaandrushachannel8371
2 months ago

да, сейчас не особо актуально тут писать, но чел, ща намного лучше гутаришь)

@aploor215
2 months ago

23:12