我无意找到解决问题的方法。
我已经使用Carousel Widget制作了一个应用程序。在这个转盘我有4张幻灯片。 welcomeSlide - > DVDSlide - > DVDPretSlide - > CategorySlide 我为每张幻灯片制作了一个课程。
我使用ListAdpter来显示从Sqlite3数据库中提取的数据。
我的问题是关于刷新列表,当我在DVDSlide中修改DVD(添加名称为pret)时,当我滑到DVDPret时,DVD没有出现,因为列表没有刷新。
就像旋转木马的文档一样,我在幻灯片更改时找不到该事件。如果存在获取当前幻灯片索引的事件,那将是最好的。
你有什么想法吗?
谢谢,
答案 0 :(得分:5)
您可以观察index
属性:
from kivy.uix.carousel import Carousel
from kivy.uix.boxlayout import BoxLayout
from kivy.app import App
from kivy.lang import Builder
Builder.load_string('''
<Page>:
Label:
text: str(id(root))
<Carousel>
on_index: print("slide #{}".format(args[1]))
''')
class Page(BoxLayout):
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()
或者您可以观察current_slide
属性:
from kivy.uix.carousel import Carousel
from kivy.uix.boxlayout import BoxLayout
from kivy.app import App
from kivy.lang import Builder
Builder.load_string('''
<Page>:
label_id: label_id
Label:
id: label_id
text: str(id(root))
<Carousel>
on_current_slide: print(args[1].label_id.text)
''')
class Page(BoxLayout):
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()
答案 1 :(得分:0)
如果您要使用纯python解决方案而不是Kivy语言解决方案,则可以创建自己的继承自Kivy轮播的轮播,如下所示。
import kivy
from kivy.uix.carousel import Carousel
class MyCarousel(Carousel):
# This class is a carousel that runs script
# when a slide gets focus (except first load).
def on_index(self, *args):
print('the slide is', self.index)
# YOUR CODE GOES HERE
Carousel.on_index(self, *args)