Software:Kivy (framework)

From HandWiki
Short description: Free and multi-platform graphical library for Python
Kivy
Kivy logo.png
Kivy showcase screenshot.jpg
The Kivy Showcase example
Developer(s)Kivy organization
Initial release1 February 2011; 13 years ago (2011-02-01)[1]
Stable release
2.2.1 / 17 June 2023; 8 months ago (2023-06-17)[2]
Repositorygithub.com/kivy/kivy
Written inPython, Cython
Operating systemCross-platform
TypeApplication framework
LicenseMIT (Free software)
Websitekivy.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 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

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

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

Google Summer of Code

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

References

External links