Kivy 简明教程

Kivy - Effects

Kivy 库提供“kivy.effects”子包,用于在 Kivy 应用程序中使用 ScrollView 小部件时控制滚动效果。Effect 类可以执行诸如反弹、改变不透明度或防止滚动超出正常边界等操作。

有三个 Effect 类-

  1. ScrollEffect - 用于实现效果的基本类。它只计算滚动和卷动。此类在 kivy.effects.scroll 模块中定义。

  2. DampedScrollEffect - 使用滚动信息允许用户拖动超预期。一旦用户停止拖动,位置就会恢复到其中一个边界。此类的定义在 kivy.effects.dampedscroll 模块中。

  3. OpacityScrollEffect - 使用滚动信息来降低滚动视图小部件的不透明度。当用户停止拖动时,不透明度会被设回为 1。类定义在 kivy.effects.opacityscroll 模块中。

这些类使用 KineticEffect 作为基本类,从移动中计算速度。

要在 ScrollView 的滚动行为中应用这些类中的任何一个的效果,请将其中一个类设置为 ScrollView 小部件的 effect_cls 属性的值。

scr = ScrollView(size=Window.size)
scr.eefect_cls=ScrollEffect

Example

以下“kv”语言脚本构建了一个 ScrollView,其中添加了一个包含一百个按钮的 GridLayout。“effect_cls”属性被设为 ScrollEffect 类。

#:import ScrollEffect kivy.effects.scroll.ScrollEffect
#:import Button kivy.uix.button.Button
<RootWidget>
   effect_cls: ScrollEffect
   GridLayout:
   size_hint_y: None
   height: self.minimum_height
   cols: 1
   on_parent:
      for i in range(100):
self.add_widget(Button(text=str(i), size_hint_y=None))

上面的“kv”代码使用了一个名为 RootWidget 的类规则。以下 Python 代码中的 App 类的 build() 方法返回一个 RootWidget 类对象。

from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.effects.dampedscroll import DampedScrollEffect
from kivy.core.window import Window
from kivy.app import App
from kivy.core.window import Window

Window.size = (720,350)

class RootWidget(ScrollView):
   pass

class scrollableapp(App):
   def build(self):
      return RootWidget()

scrollableapp().run()

Output

从命令行执行上述 Python 程序。你会得到一个带有滚动视图的应用窗口,显示一个按钮快照。你可以通过激活 ScrollEffect 向上或向下滚动。

kivy effects

你可以通过在 RootWidget 类中指定属性来自定义 Effect 类,并将其用作“effect_cls”属性。

例如,你可以设置 maxmin 作为用于滚动的边界。overscroll 属性是用户过度滚动(即超出边界)时的计算值。