Kivy 旋转木马和按钮小部件

Kivy Carousel and Button Widgets

感谢上次 post 上的一些朋友,我有一个成功运行的 Kivy 轮播,现在我正尝试在轮播的最后一页上添加一个 "get started" 类型的按钮,这将需要单击时用户进入主应用程序视图。

我觉得我需要实现诸如 "if the current picture is 'n' " 的逻辑来仅将按钮应用到最后一个屏幕,但我不确定如何让它工作。我四处寻找解决方案,但没有找到任何与这个特定概念相关的东西..

这是我的轮播代码,谢谢!!:

from kivy.app import App
from kivy.uix.carousel import Carousel
from kivy.uix.image import AsyncImage

class CarouselApp(App):

    def build(self):

        carousel = Carousel(direction='right')

        #For each loop to take each image from directory and place in carousel
        for i in range(0, 3):
            src = "carousel/%s.png" % str(i)
            image = AsyncImage(source=src, allow_stretch=True)
            carousel.add_widget(image)

        return carousel

CarouselApp().run()

在旋转木马的最后一项上,您必须添加一个包含图像和按钮的布局,而不是只添加图像:

带框布局

from kivy.app import App
from kivy.uix.carousel import Carousel
from kivy.uix.image import AsyncImage
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button

class CarouselApp(App):

    def build(self):

        carousel = Carousel(direction='right')

        #For each loop to take each image from directory and place in carousel
        for i in range(0, 3):
            if i == 2:
                src = "carousel/%s.png" % str(i)
                button = Button(text='Get Started', on_press=self.get_started, size_hint_y=.1)
                image = AsyncImage(source=src, allow_stretch=True, size_hint_y=.9)
                layout = BoxLayout(orientation='vertical')
                layout.add_widget(image)
                layout.add_widget(button)
                carousel.add_widget(layout)
            else:
                src = "carousel/%s.png" % str(i)
                image = AsyncImage(source=src, allow_stretch=True)
                carousel.add_widget(image)
        return carousel

    def get_started(self, *args):
        print "let's start"

CarouselApp().run()

带有浮动布局

...
from kivy.uix.floatlayout import FloatLayout

...

class CarouselApp(App):
    def build(self):
        carousel = Carousel(direction='right')
        #For each loop to take each image from directory and place in carousel
        for i in range(0, 3):
            if i == 2:
                src = "carousel/%s.png" % str(i)
                button = Button(text='Get Started', on_press=self.get_started, size_hint=(.5,.1), pos_hint={'center_x': .5, 'y': .1})
                image = AsyncImage(source=src, allow_stretch=True, size_hint=(1, 1), pos_hint={'center_x': .5, 'y': 0})
                layout = FloatLayout()
                layout.add_widget(image)
                layout.add_widget(button)
                carousel.add_widget(layout)

...