From 4c9c1a5aac721184c7a33d2aa532e798137b5fe1 Mon Sep 17 00:00:00 2001 From: legikaloz Date: Thu, 2 Aug 2012 16:23:22 +0300 Subject: [PATCH] Step property to use slider with fixed intervals --- kivy/uix/slider.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/kivy/uix/slider.py b/kivy/uix/slider.py index 90e31f660..b0d3ef7cd 100644 --- a/kivy/uix/slider.py +++ b/kivy/uix/slider.py @@ -86,6 +86,15 @@ class Slider(Widget): (:data:`min`, :data:`max`) ''' + step = NumericProperty(1) + '''Step size of the slider + Determines the size of each interval or step the slider takes between + min and max. If the value range can't be evenly divisible by step the + last step will be capped by slider.max + :data:`step` is a :class:`~kivy.properties.NumericProperty`, default to + 1. + ''' + def get_norm_value(self): vmin = self.min d = self.max - vmin @@ -95,7 +104,11 @@ class Slider(Widget): def set_norm_value(self, value): vmin = self.min - self.value = value * (self.max - vmin) + vmin + val = value * (self.max - vmin) + vmin + if self.step == 1: + self.value = val + else: + self.value = min(round((val-vmin)/self.step)*self.step,self.max) value_normalized = AliasProperty(get_norm_value, set_norm_value, bind=('value', 'min', 'max')) '''Normalized value inside the :data:`range` (min/max) to 0-1 range::