【问题标题】:How to make a carousel in Kivy?如何在 Kivy 中制作旋转木马?
【发布时间】:2014-04-07 14:33:27
【问题描述】:

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

有什么想法吗?谢谢。

【问题讨论】:

    标签: python carousel kivy


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢它的工作,这正是我需要的。只有一种精度,在我使用图片的情况下,如何使用多个来源让不同的图像通过轮播?
    • 实际上,如果我在这里放置return carousel,我就不能在我的应用程序中使用任何布局,对吗?因为想象我想把我的屏幕分成顶部的标题和窗口其余部分的轮播,这个return carousel 会占据整个屏幕吗?
    猜你喜欢
    • 2019-04-18
    • 1970-01-01
    • 2018-08-13
    • 2021-04-09
    • 2023-01-28
    • 2014-02-01
    • 2022-08-03
    • 2020-06-03
    • 1970-01-01
    相关资源
    最近更新 更多