如何在Kivy中制作轮播图?

0 投票
1 回答
1499 浏览
提问于 2025-04-18 01:43

我做了一个小的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()

(我把图片换成了标签,这样更容易看出区别)

撰写回答