如何在Kivy制作旋转木马?

时间:2014-04-07 14:33:27

标签: python carousel 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 个答案:

答案 0 :(得分:2)

你想要一个事件来触发这个动作,我认为最简单的方法就是使用一个时钟。

from kivy.clock import Clock

然后在你的构建中,你可以安排以某个间隔递增轮播的位置,轮播对load_next有一个方便的功能,但如果你这样做,它会卡在最后一帧上非常快,所以您可能希望将loop=True传递给Carousel实例。

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()

(我通过标签更改图像以更容易地看到差异)