гм, что-то вроде
ScrollView:
size_hint: None, None
size: 500, 320
pos_hint: {'center_x': .5, 'center_y': .5}
do_scroll_x: False
GridLayout:
cols: 1
padding: 10
spacing: 10
size_hint_y: None
height: self.minimum_height
ScrollButton:
text: '1'
ScrollButton:
text: '2'
ScrollButton:
text: '3'
ScrollButton:
text: '4'
ScrollButton:
text: '5'
ScrollButton:
text: '6'
<[email protected]>
size_hint: None, None
size: 480, 40
здесь, однако мы не действительно есть способ динамически создавать детей (ну, было бы пути, но они уродливы), поэтому я положил несколько вручную, вы идеализировали бы ScrollView и GridLayout в kv, а затем помещали детей из python (используя ids, как объяснено в документе).
редактировать: более полная версия, используя приложение и OBJECTPROPERTY
Kv файл (scroll.kv):
ScreenManager:
Screen:
ScrollView:
size_hint: None, None
size: 500, 320
pos_hint: {'center_x': .5, 'center_y': .5}
GridLayout:
cols: 1
padding: 10
spacing: 10
height: self.minimum_height
size_hint: None, None
do_scroll_x: False
id: container
<ScrollButton>
size_hint: None, None
size: 480, 40
питон файл (main.py):
from kivy.app import App
from kivy.uix.button import Button
class ScrollButton(Button):
pass
class ScrollApp(App):
def build(self):
super(ScrollApp, self).build()
container = self.root.ids.container
for i in range(30):
container.add_widget(ScrollButton(text=str(i)))
return self.root # return root does not work
if __name__ == '__main__':
ScrollApp().run()
И там вы см. проблему. Мой «ScrollViewApp» будет одним из экранов в моем ScreenManager. Я решил добавить кнопки в скроллер динамически, используя ObjectProperty в качестве ссылки, но без кубиков. Действительно ли нет эквивалентного метода? –
Чтобы дать вам немного фона, это приложение «Список дел». Кнопками будут задачи, вызванные из хранимой таблицы. –
Отредактировано, чтобы показать более полное приложение, которое должно получить вас на дорожках. – Tshirtman