Quick search


New in version 1.4.0.


Spinner is a widget that provides a quick way to select one value from a set. In the default state, a spinner shows its currently selected value. Touching the spinner displays a dropdown menu with all the other available values from which the user can select a new one.


from kivy.base import runTouchApp
from kivy.uix.spinner import Spinner

spinner = Spinner(
    # default value shown
    # available values
    values=('Home', 'Work', 'Other', 'Custom'),
    # just for positioning in our example
    size_hint=(None, None),
    size=(100, 44),
    pos_hint={'center_x': .5, 'center_y': .5})

def show_selected_value(spinner, text):
    print('The spinner', spinner, 'has text', text)



Kv Example:

        size_hint: None, None
        size: 100, 44
        pos_hint: {'center': (.5, .5)}
        text: 'Home'
        values: 'Home', 'Work', 'Other', 'Custom'
            print("The spinner {} has text {}".format(self, self.text))
class kivy.uix.spinner.Spinner(**kwargs)[source]

Bases: kivy.uix.button.Button

Spinner class, see module documentation for more information.


Class used to display the dropdown list when the Spinner is pressed.

dropdown_cls is an ObjectProperty and defaults to DropDown.

Changed in version 1.8.0: If set to a string, the Factory will be used to resolve the class name.


By default, the spinner is not open. Set to True to open it.

is_open is a BooleanProperty and defaults to False.

New in version 1.4.0.


Class used to display the options within the dropdown list displayed under the Spinner. The text property of the class will be used to represent the value.

The option class requires:

  • a text property, used to display the value.

  • an on_release event, used to trigger the option when pressed/touched.

  • a size_hint_y of None.

  • the height to be set.

option_cls is an ObjectProperty and defaults to SpinnerOption.

Changed in version 1.8.0: If you set a string, the Factory will be used to resolve the class.


Each element in a dropdown list uses a default/user-supplied height. Set to True to propagate the Spinner’s height value to each dropdown list element.

New in version 1.10.0.

sync_height is a BooleanProperty and defaults to False.


Indicates if the spinner’s text should be automatically updated with the first value of the values property. Setting it to True will cause the spinner to update its text property every time attr:values are changed.

New in version 1.10.0.

text_autoupdate is a BooleanProperty and defaults to False.


Values that can be selected by the user. It must be a list of strings.

values is a ListProperty and defaults to [].

class kivy.uix.spinner.SpinnerOption(**kwargs)[source]

Bases: kivy.uix.button.Button

Special button used in the Spinner dropdown list. By default, this is just a Button with a size_hint_y of None and a height of 48dp.