Kivy - 旋转木马



旋转木马是一种用于循环浏览一系列内容的幻灯片放映。Kivy 框架包含一个 Carousel 组件,允许您轻松创建可浏览的幻灯片放映,尤其适用于智能手机等触摸屏设备。旋转木马中的页面可以水平或垂直移动。

Carousel 类定义在 "kivy.uix.carousel" 模块中。

from kivy.uix.carousel import Carousel
carousel = Carousel(**kwargs)

下面是一个使用旋转木马创建简单幻灯片的 Python/Kivy 程序:

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

class CarouselApp(App):
   def build(self):
      carousel = Carousel(direction='right')
      img1=Image(source='1.png')
      carousel.add_widget(img1)
      img2=Image(source='2.png')
      carousel.add_widget(img2)
      img3=Image(source='3.png')
      carousel.add_widget(img3)
      return carousel
CarouselApp().run()

您也可以使用 "kv" 语言脚本构建旋转木马。

Carousel:
   direction: 'right'
   Image:
      source: '1.png'
   Image:
      source: '2.png'
   Image:
      source: '3.png'
   Image:
      source: '4.png'

Carousel 类定义了以下属性:

  • current_slide - 当前显示的幻灯片。current_slide 是一个 AliasProperty。

  • direction - 指定幻灯片排列的方向。这对应于用户从哪个方向滑动才能从一个幻灯片切换到下一个幻灯片。可以是 right、left、top 或 bottom。

  • index - 获取/设置基于索引的当前幻灯片。index 默认值为 0(第一个项目)。

  • load_next(mode='next') - 动画切换到下一张幻灯片。

  • load_previous() - 动画切换到上一张幻灯片。

  • load_slide(slide) - 动画切换到作为参数传递的幻灯片。

  • loop - 允许旋转木马无限循环。如果为 True,当用户尝试滑动到最后一页之后,它将返回到第一页。如果为 False,它将停留在最后一页。

  • next_slide - 旋转木马中的下一张幻灯片。如果当前幻灯片是旋转木马中的最后一页,则为 None。

  • previous_slide - 旋转木马中的上一张幻灯片。如果当前幻灯片是旋转木马中的第一页,则为 None。

  • scroll_distance - 滚动旋转木马之前移动的距离(以像素为单位)。默认距离为 20dp。

  • scroll_timeout - 触发 scroll_distance 允许的超时时间(以毫秒为单位)。默认为 200(毫秒)。

  • slides - 旋转木马内的幻灯片列表。

示例

作为 Kivy 中 Carousel 的示例,请查看以下代码。Carousel 对象用作应用程序的根组件,我们添加标签、按钮和图像作为其幻灯片。

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.carousel import Carousel
from kivy.uix.image import Image
from kivy.core.window import Window
Window.size = (720,350)

class CarouselApp(App):
   def build(self):
      carousel = Carousel(direction='right')
      carousel.add_widget(Button(text='Button 1', font_size=32))
      src = "ganapati.png"
      image = Image(source=src, fit_mode="contain")
      carousel.add_widget(image)
      carousel.add_widget(Button(text="Button 2", font_size=32))
      return carousel
CarouselApp().run()

输出

这是一个简单的应用程序,可以通过在设备显示屏上滑动来浏览一系列幻灯片。direction 参数设置为 right,这意味着后续幻灯片位于右侧。

Kivy Carousel

使用 "kv" 语言组装旋转木马

让我们使用 "kv" 语言脚本组装旋转木马。这次,direction 设置为 top,这意味着您必须向上滑动屏幕才能看到下一个显示。

示例

Carousel:
   direction:'top'
   Button:
      text:'Button 1'
      font_size:32
   Image:
      source:"kivy-logo.png"
      fit_mode:"contain"
   Button:
      text:"Button 2"
      font_size:32

输出

幻灯片一个接一个地堆叠在一起。

Kivy Carousel Button
广告