如何在Kivy中制作轮播图?
我做了一个小的Kivy应用程序,作为界面。这个轮播图看起来是可以工作的,但我想让它自己自动开始(也就是说,不用鼠标)。实际上,这个应用会被放在一个小机器人上,而那个机器人没有鼠标或键盘,所以我需要轮播图能够自动切换图片。
从我的代码中可以看到,轮播图确实能工作,但我就是搞不清楚怎么让它在没有鼠标点击的情况下自己开始。
class Logo(App):
def build(self):
carousel = Carousel(direction='right')
for i in range(2):
src = "image.png"
image = Factory.AsyncImage(source=src, allow_stretch=True)
carousel.add_widget(image)
return carousel
if __name__ == '__main__':
Logo().run()
有什么想法吗?谢谢。
1 个回答
2
你想让一个事件来触发移动,我觉得最简单的方法就是用一个时钟。
from kivy.clock import Clock
然后在你的构建里,你可以设置一个定时器,让轮播图在某个时间间隔内自动移动。轮播图有一个很方便的函数叫 load_next
,但是如果你只是用这个,它会很快卡在最后一帧,所以你可能需要在创建 Carousel
的时候加上 loop=True
,这样它就会循环播放。
from kivy.app import App
from kivy.factory import Factory
from kivy.uix.carousel import Carousel
from kivy.clock import Clock
class Logo(App):
def build(self):
carousel = Carousel(direction='right', loop=True)
for i in range(2):
image = Factory.Label(text=str(i))
carousel.add_widget(image)
Clock.schedule_interval(carousel.load_next, 1)
return carousel
if __name__ == '__main__':
Logo().run()
(我把图片换成了标签,这样更容易看出区别)