Как в файле .kv реализовать в динамическом цикле for вызов функции
#:import Button kivy.uix.button.Button
<Main>:
BoxLayout:
orientation: "vertical"
BoxLayout:
orientation: "horizontal"
size_hint_y: .1
Button:
size_hint_x: .25
text:"5"
on_press: root.direct()
Label:
text: root.pus
ScrollView:
do_scroll_x: False
do_scroll_y: True
GridLayout:
cols: 1
size_hint_y:None
height: self.minimum_height
on_parent: for i in range(root.len_files): self.add_widget(Button(text = root.list_files[i], size_hint_y=None, height=200, on_release=root.direct()))
Ответы (2 шт):
Автор решения: renin
→ Ссылка
: BoxLayout: orientation: 'vertical'
# Создаем кнопки в цикле for
GridLayout:
cols: 2
size_hint_y: None
height: dp(40) * len(root.button_names)
# Используем динамический цикл for для создания кнопок
# и привязываем функцию on_button_press к каждой кнопке
# через лямбда-функцию
Button:
text: button_name
on_press: lambda button_name=button_name: root.on_button_press(button_name)
for button_name in root.button_names
Автор решения: maxkosalex
→ Ссылка
Нашел неплохой вариант с помощью lambda-функции
on_parent: for i in range(root.len_files): self.add_widget(Button(text = root.list_files[i], size_hint_y=None, height=200, on_press=lambda x:root.direct()))