Kivy (framework)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Kivy logo.png
The Kivy Showcase example
The Kivy Showcase example
Developer(s)Kivy organization
Initial release1 February 2011; 9 years ago (2011-02-01)[1]
Stable release
1.11.1 / 19 July 2019; 14 months ago (2019-07-19)[2]
Preview release
2.0.0rc3 / 15 June 2020; 3 months ago (2020-06-15)
Written inPython, Cython
Operating systemCross-platform
TypeApplication framework
LicenseMIT (Free software)

Kivy is a free and open source Python framework for developing mobile apps and other multitouch application software with a natural user interface (NUI). It is distributed under the terms of the MIT License, and can run on Android, iOS, GNU/Linux, macOS, and Windows.

Kivy is the main framework developed by the Kivy organization,[3] alongside Python for Android,[4] Kivy iOS,[5] and several other libraries meant to be used on all platforms. In 2012, Kivy got a $5000 grant from the Python Software Foundation for porting it to Python 3.3.[6] Kivy also supports the Raspberry Pi which was funded through Bountysource.[7]

The framework contains all the elements for building an application such as:

Kivy is the evolution of the PyMT project, and is recommended for new projects.[9]

Related projects[edit]

Code example[edit]

Here is an example of the Hello world program with just one button:

from import App
from kivy.uix.button import Button

class TestApp(App):
    def build(self):
        return Button(text="Hello World")


Kv language[edit]

The Kv language is a language dedicated to describing user interface and interactions in Kivy framework. As with other user interface markup languages, it is possible to easily create a whole UI and attach interaction. For example, to create a Loading dialog that includes a file browser, and a Cancel / Load button, one could first create the base widget in Python and then construct the UI in Kv.


class LoadDialog(FloatLayout):
    def load(self, filename): pass
    def cancel(self): pass

And in the associated Kv:

#:kivy 1.11.1

        size: root.size
        pos: root.pos
        orientation: "vertical"

            id: filechooser

            size_hint_y: None
            height: 30

                text: "Cancel"
                on_release: root.cancel()

                text: "Load"
                on_release: root.load(filechooser.path, filechooser.selection)

Alternatively, the layout (here, Box Layout) and the buttons can be loaded directly in the file.

Google Summer of Code[edit]

Kivy participated in Google Summer of Code under Python Software Foundation.

  • Kivy in GSoC'2014.[10]
  • Kivy in GSoC'2015.[11]
  • Kivy in GSoC'2016.[12]
  • Kivy in GSoC'2017.[13]

See also[edit]


  1. ^ "Kivy changelog",, retrieved 2016-04-05
  2. ^
  3. ^ "About us",
  4. ^ "Python for Android",
  5. ^ "Kivy for iOS",
  6. ^ "Kivy and Python 3.3, project started", Google Groups
  7. ^ "Kivy on Raspberry Pi",
  8. ^ "Programming Guide » Kv language",
  9. ^ "FAQ: How is Kivy related to PyMT?",, retrieved 2012-06-09
  10. ^ "Google Summer of Code 2014 @ the Python Software Foundation".
  11. ^ "Google Summer of Code 2015 @ the Python Software Foundation".
  12. ^ "Google Summer of Code 2016 @ the Python Software Foundation".
  13. ^ "Google Summer of Code 2017 @ the Python Software Foundation".

External links[edit]