Quick search

Table Of Contents


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, 'have text', 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 you set a string, the Factory will be used to resolve the class.


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.


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.