.. | ||
__init__.py | ||
LICENSE | ||
README.md | ||
roulettescroll.py |
RouletteScrollEffect
This is a subclass of kivy.effects.ScrollEffect
that simulates the
motion of a roulette, or a notched wheel (think Wheel of Fortune). It is
primarily designed for emulating the effect of the iOS and android date pickers.
Usage
Here's an example of using RouletteScrollEffect
for a kivy.uix.scrollview.ScrollView
:
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
# Preparing a `GridLayout` inside a `ScrollView`.
layout = GridLayout(cols=1, padding=10, size_hint=(None, None), width=500)
layout.bind(minimum_height=layout.setter('height'))
for i in range(30):
btn = Button(text=str(i), size=(480, 40), size_hint=(None, None))
layout.add_widget(btn)
root = ScrollView(
size_hint=(None, None),
size=(500, 320),
pos_hint={'center_x': .5, 'center_y': .5},
do_scroll_x=False,
)
root.add_widget(layout)
# Preparation complete. Now add the new scroll effect.
root.effect_y = RouletteScrollEffect(anchor=20, interval=40)
runTouchApp(root)
Here the ScrollView
scrolls through a series of buttons with height 40
. We then attached a RouletteScrollEffect
with interval 40,
corresponding to the button heights. This allows the scrolling to stop at
the same offset no matter where it stops. The RouletteScrollEffect.anchor
adjusts this offset.
Customizations
Other settings that can be played with include:
RouletteScrollEffect.pull_duration
RouletteScrollEffect.coasting_alpha
RouletteScrollEffect.pull_back_velocity
RouletteScrollEffect.terminal_velocity
See their module documentations for details.
RouletteScrollEffect
has one event on_coasted_to_stop
that
is fired when the roulette stops, "making a selection". It can be listened to
for handling or cleaning up choice making.