Python kivy - меняется размер кнопок при изменении их количества. Как это убрать?

Есть кнопка, по нажатию на которую под ней добавляется другие кнопки. Проблема в том, что я задал размер BoxLayout, чтобы он не занимал весь экран, и теперь при добавлении новых кнопок у них меняется размер, они уменьшаются, так как их суммарный размер постоянный. Как сделать так, чтобы новые кнопки просто добавлялись под старыми, не меняя размер старых?

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.boxlayout import BoxLayout

from kivy.uix.widget import Widget
from kivy.graphics import Rectangle


class MyApp(App):   
    
    button_amount = 2

    def build(self):

        al = AnchorLayout()
        bl = BoxLayout(orientation = 'vertical',
            size_hint = [None, None],
            size = [300,100 * MyApp.button_amount])
        btn1 = Button(text="Создать группу",
            size = [300,200])

        bl.add_widget(btn1)
        al.add_widget(bl)

        def new_group(self):
            btn2 = Button(text = "Новая группа")
            bl.add_widget(btn2)
            MyApp.button_amount += 1

        btn1.bind(on_release=new_group)

        return al

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

Ответы (1 шт):

Автор решения: Xyanight
from kivy.app import App
from kivy.metrics import dp
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import Screen
from kivy.uix.scrollview import ScrollView


class MyApp(App):
    def build(self):
        screen = Screen()
        scroll = ScrollView(
            size_hint=(0.5, 0.7), pos_hint={"center_x": 0.5, "center_y": 0.5}
        )
        self.grid = GridLayout(cols=1, size_hint_y=None)
        self.grid.bind(minimum_height=self.grid.setter("height"))
        button = Button(
            text="Создать группу",
            size_hint_y=None,
            height=dp(200),
            on_release=self.new_group,
        )

        screen.add_widget(scroll)
        self.grid.add_widget(button)
        scroll.add_widget(self.grid)
        return screen

    def new_group(self, *args):
        self.grid.add_widget(
            Button(text="Новая группа", size_hint_y=None, height=dp(100))
        )


if __name__ == '__main__':
    MyApp().run()
→ Ссылка