轮播图

_images/carousel.gif

在 1.4.0 版本加入.

: Carousel 组件提供了经典的移动端友好的轮播视图,您可以在其中滑动切换幻灯片。您可以将任何内容添加到轮播中,并使其水平或垂直移动。轮播可以按顺序或循环显示页面。

示例:

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 i in range(10):
            src = "http://placehold.it/480x270.png&text=slide-%d&.png" % i
            image = AsyncImage(source=src, fit_mode="contain")
            carousel.add_widget(image)
        return carousel


CarouselApp().run()

Kv 示例:

Carousel:
    direction: 'right'
    AsyncImage:
        source: 'http://placehold.it/480x270.png&text=slide-1.png'
    AsyncImage:
        source: 'http://placehold.it/480x270.png&text=slide-2.png'
    AsyncImage:
        source: 'http://placehold.it/480x270.png&text=slide-3.png'
    AsyncImage:
        source: 'http://placehold.it/480x270.png&text=slide-4.png'

在 1.5.0 版本发生变更: 轮播现在支持活动子项,类似于 ScrollView。它将根据 Carousel.scroll_timeoutCarousel.scroll_distance 属性检测滑动手势。

此外,滑动容器不再通过API暴露。受影响的属性包括:Carousel.slidesCarousel.current_slideCarousel.previous_slideCarousel.next_slide

class kivy.uix.carousel.Carousel(**kwargs)[源代码]

基类:StencilView

Carousel 类。更多信息请参阅模块文档。

add_widget(widget, index=0, *args, **kwargs)[源代码]

将此小部件添加为当前小部件的子级。

参数:
widgetWidget

要添加到我们子控件列表中的控件。

index:整数,默认值为0

在列表中插入控件的索引。请注意,默认值0意味着控件被插入到列表的开头,因此会绘制在其他同级控件之上。关于索引和控件层次结构的完整讨论,请参阅 控件编程指南

在 1.0.5 版本加入.

canvas:字符串,默认为 None

用于添加控件画布的Canvas。可以是'before'、'after'或None以使用默认画布。

在 1.9.0 版本加入.

>>> from kivy.uix.button import Button
>>> from kivy.uix.slider import Slider
>>> root = Widget()
>>> root.add_widget(Button())
>>> slider = Slider()
>>> root.add_widget(slider)
anim_cancel_duration

定义滑动动作未被接受时动画的持续时间。这通常发生在用户未进行足够大幅度的滑动时。参见 min_move

anim_cancel_duration 是一个 NumericProperty,默认值为 0.3。

anim_move_duration

定义轮播页面之间动画的持续时间。

anim_move_duration 是一个 NumericProperty,默认值为 0.5。

anim_type

在切换到下一张/上一张幻灯片时使用的动画类型。这应该是 AnimationTransition 函数的名称。

anim_type 是一个 StringProperty,默认值为 'out_quad'。

在 1.8.0 版本加入.

clear_widgets(children=None, *args, **kwargs)[源代码]

移除该控件的所有(或指定的):attr:~Widget.children。如果指定了'children'参数,它应为当前控件子项的一个列表(或过滤后的列表)。

在 1.8.0 版本发生变更: children 参数可用于指定你想要移除的子项。

在 2.1.0 版本发生变更: 指定一个空的``children``列表不会改变现有控件。此前,它会被视为``None``,从而移除所有子控件。

current_slide

当前显示的幻灯片。

current_slide 是一个 AliasProperty

在 1.5.0 版本发生变更: 该属性不再暴露幻灯片容器,而是返回您添加的控件。

direction

指定幻灯片排列的方向。这对应于用户从一个幻灯片滑动到下一个幻灯片时的滑动方向。可选值为 rightlefttopbottom。例如,默认值为 right 时,第二个幻灯片位于第一个的右侧,用户需从右向左滑动以到达第二个幻灯片。

direction 是一个 OptionProperty,默认值为 'right'。

ignore_perpendicular_swipes

忽略与方向垂直的轴上的滑动。

ignore_perpendicular_swipes 是一个 BooleanProperty,默认值为 False。

在 1.10.0 版本加入.

index

根据索引获取/设置当前幻灯片。

index 是一个 AliasProperty,默认值为 0(即第一个项目)。

load_next(mode='next')[源代码]

动画到下一张幻灯片。

在 1.7.0 版本加入.

load_previous()[源代码]

动画到上一张幻灯片。

在 1.7.0 版本加入.

load_slide(slide)[源代码]

动画到作为参数传递的幻灯片。

在 1.8.0 版本发生变更.

loop

允许Carousel无限循环。若为True,当用户尝试滑动超过最后一页时,将返回第一页。若为False,则停留在最后一页。

loop 是一个 BooleanProperty,默认值为 False。

min_move

定义触摸被视为滑动手势并触发Carousel内容切换前所需覆盖的最小距离。该值表示为Carousel宽度的比例。如果移动未达到此最小值,则移动将被取消,内容将恢复到其原始位置。

min_move 是一个 NumericProperty,默认值为 0.2。

next_slide

Carousel 中的下一张幻灯片。如果当前幻灯片是 Carousel 中的最后一张,则为 None。此顺序反映了幻灯片添加的顺序:它们的展示方式根据 direction 属性而变化。

next_slide 是一个 AliasProperty

在 1.5.0 版本发生变更: 该属性不再暴露幻灯片容器,而是返回您添加的控件。

on_touch_down(touch)[源代码]

接收触摸按下事件。

参数:
touchMotionEvent

收到触摸事件。该触摸位于父级坐标系中。关于坐标系统的讨论,请参阅 relativelayout

返回:

bool 若为 True,触摸事件的派发将停止。若为 False,事件将继续派发给控件树中的其余部分。

on_touch_move(touch)[源代码]

接收触摸移动事件。触摸坐标位于父坐标系中。

更多信息请参阅 on_touch_down()

on_touch_up(touch)[源代码]

接收触摸抬起事件。触摸坐标位于父坐标系中。

更多信息请参阅 on_touch_down()

previous_slide

轮播图中的上一张幻灯片。如果当前幻灯片是轮播图中的第一张,则该值为 None。此顺序反映了幻灯片添加的顺序:它们的呈现方式根据 direction 属性而变化。

previous_slide 是一个 AliasProperty

在 1.5.0 版本发生变更: 该属性不再暴露幻灯片容器。它返回您已添加的控件。

remove_widget(widget, *args, **kwargs)[源代码]

从该部件的子部件中移除一个部件。

参数:
widgetWidget

要从我们的子部件列表中移除的部件。

>>> from kivy.uix.button import Button
>>> root = Widget()
>>> button = Button()
>>> root.add_widget(button)
>>> root.remove_widget(button)
scroll_distance

滚动 Carousel 前需要移动的距离(以像素为单位)。一旦达到该距离,Carousel 将开始滚动,且触摸事件将不再传递给子组件。建议您根据目标设备屏幕的 dpi 来设定此值。

scroll_distance 是一个 NumericProperty,默认值为 20dp。

在 1.5.0 版本加入.

scroll_timeout

允许触发 scroll_distance 的超时时间,单位为毫秒。如果用户在此超时时间内未移动 scroll_distance,则不会发生滚动,触摸事件将传递给子组件。

scroll_timeout 是一个 NumericProperty,默认值为 200(毫秒)。

在 1.5.0 版本加入.

slides

Carousel 内部的幻灯片列表。这些幻灯片是通过 add_widget 方法添加到 Carousel 中的控件。

slides 是一个 ListProperty,并且是只读的。