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()