Kivy (framework)

Free and multi-platform graphical library for Python

This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources.
Find sources: "Kivy" framework – news · newspapers · books · scholar · JSTOR (June 2022) (Learn how and when to remove this message)

|

Kivy

The Kivy Showcase example

Developer(s)| Kivy organization
Initial release| 1 February 2011; 14 years ago (2011-02-01)[1]
Stable release|

2.3.0 / 5 January 2024; 19 months ago (2024-01-05)[2]

Repository| github.com/kivy/kivy
Written in| Python, Cython
Operating system| Cross-platform
Type| Application framework
License| MIT (Free software)
Website| kivy.org

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, Linux, macOS, and Windows.

Kivy is the main framework developed by the Kivy organization,[3] alongside Python for Android,[4] Kivy for 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:

* extensive input support for mouse, keyboard, TUIO, and OS-specific multitouch events;
* a graphic library using only OpenGL ES 2, and based on Vertex Buffer Object and shaders;
* a wide range of widgets that support multitouch;
* an intermediate language (Kv)[8] used to easily design custom widgets.

Kivy is an evolution of the PyMT project.[9]

## Code example

[edit]

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

from kivy.app import App
from kivy.uix.button import Button

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

TestApp().run()

## 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.

In main.py:

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

And in the associated Kv:

#:kivy 1.11.1

<LoadDialog>:
BoxLayout:
size: root.size
pos: root.pos
orientation: "vertical"

FileChooserListView:
id: filechooser

BoxLayout:
size_hint_y: None
height: 30

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

Button:
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 main.py file.

## Related projects

[edit]

* Buildozer, generic Python packager for Android and iOS.
* Plyer, platform-independent Python wrapper for platform-dependent APIs.
* PyJNIus, dynamic access to the Java/Android API from Python.
* Pyobjus, dynamic access to the Objective-C/iOS API from Python.
* Python for Android, toolchain for building and packaging Python applications for Android.
* Kivy for iOS, toolchain for building and packaging Kivy applications for iOS.
* Audiostream, library for direct access to the microphone and speaker.
* KivEnt, entity-based game engine for Kivy.
* Kivy Garden, widgets and libraries created and maintained by community.
* Kivy SDK Packager, scripts for Kivy SDK generation on Windows, macOS and Linux.
* Kivy Remote Shell, remote SSH+Python interactive shell application.
* KivyPie, Raspbian-based distribution running latest Kivy framework on the Raspberry Pi.
* OSCPy, a fast and reliable OSC implementation.
* Condiment, preprocessor that includes or removes Python code portion, according to environment variables.
* KivyAuth, social login via Google, Facebook, GitHub and Twitter accounts in Kivy apps.
* KivMob, AdMob support for Kivy apps.
* KivyMD, a set of Material Design widgets for Kivy.

## Google Summer of Code

[edit]

Kivy participated in Google Summer of Code under the 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]

* Free and open-source software portal
* Video games portal

* Pygame, another Python game API, a layer over Simple DirectMedia Layer
* Cocos2d
* Panda3D
* Pyglet
* Scripting Layer for Android

## References

[edit]

1. ^ "Kivy changelog", kivy.org, retrieved 2016-04-05
2. ^ "Kivy 2.3.0". github.com. 2024-01-05. Retrieved 2024-03-22.
3. ^ "About us", kivy.org
4. ^ "Python for Android", github.com
5. ^ "Kivy for iOS", github.com
6. ^ "Kivy and Python 3.3, project started", Google Groups
7. ^ "Kivy on Raspberry Pi", bountysource.com
8. ^ "Programming Guide » Kv language", kivy.org
9. ^ "FAQ: How is Kivy related to PyMT?", kivy.org, 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]

* Official website