У меня есть следующий пример:
'''
Carousel example with button inside.
This is a tiny test for testing the scroll distance/timeout
And ensure the down/up are dispatched if no gesture is done.
'''
from kivy.uix.carousel import Carousel
from kivy.uix.gridlayout import GridLayout
from kivy.app import App
from kivy.lang import Builder
Builder.load_string('''
<Page>:
cols: 3
Label:
text: str(id(root))
Button
Button
Button
Button
text: 'load(page 3)'
on_release:
carousel = root.parent.parent
carousel.load_slide(carousel.slides[2])
Button
Button
text: 'prev'
on_release:
root.parent.parent.load_previous()
Button
text: 'next'
on_release:
root.parent.parent.load_next()
print(root.parent.parent)
''')
class Page(GridLayout):
pass
class TestApp(App):
def build(self):
root = Carousel()
for x in range(10):
root.add_widget(Page())
return root
if __name__ == '__main__':
TestApp().run()
, и я использую sh, чтобы использовать карусель в моей программе. Проблема в том, что я не могу понять, как это работает. Я понимаю, что он создает 10 виджетов, как определено в классе, но я два дня пытался реализовать это в своем коде, но, похоже, я не могу его вернуть. Мне удается только один экземпляр, и когда я пытаюсь прокрутить, ничего не происходит, когда он должен менять слайды. Я не могу опубликовать свой код, потому что он состоит из нескольких файлов. Мне нужен пример, если возможно, который имеет следующую структуру в KV.
<MainLayout>
RecycleView:
BoxLayout:
*insert carousel here*
Я заставил его работать, используя непосредственно следующий код kv
Carousel:
direction: 'right'
AsyncImage:
source: 'http://placehold.it/480x270.png&text=slide-1.png'
AsyncImage:
source: 'http://placehold.it/480x270.png&text=slide-2.png'
, и он работает, но я не могу вручную писать все исходники каждый раз ... Следовательно, код python должен делать это с помощью for l oop. Может ли кто-нибудь предоставить мне пример, который возвращает MainLayout, который является экраном или чем-то еще, а не самой каруселью? Я хочу, чтобы карусель была создана в python, а затем вызывалась в kivy. Мне кажется, решение довольно простое, но по какой-то причине я не могу осмыслить его.