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)
...
感谢上次 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)
...