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 类定义了以下属性:

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

  2. direction - 指定幻灯片的排序方向。它与用户从一个幻灯片切换到下一个幻灯片时滑动的方向相对应。它可以是 right、left、top 或 bottom。

  3. index - 根据索引获取/设置当前幻灯片。index 默认值为 0(第一项)。

  4. load_next(mode='next') - 动画播放到下一张幻灯片。

  5. load_previous() - 动画播放到上一张幻灯片。

  6. load_slide(slide) - 动画播放到作为参数传递的幻灯片。

  7. loop - 允许走马灯无限循环。如果为 True,当用户尝试滑动到最后一页之外时,它将返回到第一页。如果为 False,它将停留在最后一页。

  8. next_slide - 走马灯中的下一张幻灯片。如果当前幻灯片是走马灯中的最后一张幻灯片,则它为 None。

  9. previous_slide - 走马灯中的上一张幻灯片。如果当前幻灯片是走马灯中的第一张幻灯片,则它为 None。

  10. scroll_distance - 在以像素为单位滚动走马灯之前移动的距离。默认距离为 20dp。

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

  12. slides − 轮播内幻灯片列表。

Example

以下是 Kivy 中轮播的一个示例代码。轮播对象用作应用程序的根小部件,我们将标签、按钮和图像添加为其幻灯片。

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

Output

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

kivy carousel

让我们使用“kv”语言脚本来组装轮播。这一次,direction 设置为 top,这意味着你必须向上滑动屏幕才能看到下一个显示。

Example

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

Output

幻灯片彼此叠放。

kivy carousel button