Kivy - 效果



Kivy 庫提供 “kivy.effects” 子包來控制在 Kivy 應用中使用 ScrollView 元件時的捲軸溢位效果。Effect 類可以執行諸如反彈、更改不透明度或防止滾動超出正常邊界等操作。

共有三個 Effect 類:

  • ScrollEffect - 用於實現效果的基類。它只計算滾動和滾動溢位。此類定義在 kivy.effects.scroll 模組中。

  • DampedScrollEffect - 使用滾動溢位資訊允許使用者比預期拖動更多。一旦使用者停止拖動,位置將返回到邊界之一。此類的定義在 kivy.effects.dampedscroll 模組中。

  • OpacityScrollEffect - 使用滾動溢位資訊來降低滾動檢視元件的不透明度。當用戶停止拖動時,不透明度將恢復為 1。此類的定義在 kivy.effects.opacityscroll 模組中。

這些類使用 KineticEffect 作為基類來計算運動中的速度。

要在 ScrollView 的滾動行為上應用這些類的任何效果,請將這些類中的一個設定為 ScrollView 元件的 effect_cls 屬性的值。

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

示例

下面的 “kv” 語言指令碼構建一個 ScrollView,其中向 GridLayout 添加了 100 個按鈕。“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()

輸出

從命令列執行上述 Python 程式。您將獲得一個帶有滾動檢視的應用程式視窗,顯示按鈕的快照。您可以使用啟用的 ScrollEffect 上下滾動。

Kivy Effects

您可以透過在 RootWidget 類中指定屬性來自定義 Effect 類,並將其用作 “effect_cls” 屬性。

例如,您可以設定用於滾動的 maxmin 邊界。overscroll 屬性是在使用者滾動溢位(即超出邊界)時計算的值。

廣告