Change the future

Friday 12:10 p.m.–12:40 p.m.

Kivy: Building GUI and Mobile apps with Python

Thomas Hansen, Mathieu Virbel

Audience level:
GUI Programming


This talk will introduce the Kivy project ( Kivy’s mission is to make building graphical user interfaces on any device fun, efficient, and pythonic.

The talk will focus on giving attendees an overview of how they can use kivy to build exiting UIs and mobile apps.


I’m not sure the talk will be structured exactly as listed here, but the outline below covers the parts I would like to talk about in the presentation in order to give attendees an overview of what kivy is and how to use it.


Python library
  • for building gui apps (think qt, gdk,processing)
  • build from ground up for latest tech like gpu/GLes, multi-touch
  • core parts (rendering, events/properties) written in c/cython
  • great and active community on ML, IRC, github
  • good mix of hackers, professional/business, and student users
  • great documentation (with some translation even)
Some showcase apps screenshots
  • mobile, same app on iOS and android
  • large display / multit-touch
  • desktop / presentation app being used (love the metaness)

Main Features

Pure GPU accelerated rendering
  • graphics compiler architecture, a sort of JIT for drawing instructions
  • all rendering using opengl ES
    • runs mostly anywhere these days
    • render pipeline uses shaders, vbo, fbo, etc
    • very powerful for experienced GL hackers
Cross Platform
  • Linux, OSX, Windows, android, iOS
    • runs, and support each systems input events
    • input events are mapped to generic ones
    • custom/platform specific data still accessible
  • Mobile: same python app on iOS and android
    • build straight to package
    • accepted apps on apple and google app stores
  • Supports new and future Input Devices
    • classic GUI toolkits are build on mouse/keyboard paradigm
    • Kivy widgets are multi-touch/pointer from start
    • Also does Mouse/Keyboard well, native + virtual keyboard
Simple but Powerful Widget Tree
  • Property/Event autobinding
    • widget properties automatically create events when changed
    • binding keeps data <--> view in sync
  • Collection of easily customizable base widgets:
    • labels, images, buttons, layout, text-input, etc
KV language
  • Seriously an additional DSL?
    • Yes, but dont worry...its pythonic and you will love it
  • Makes certain UI building tasks very easy and efficient
    • automatic property binding
    • quick wireframing, working prototype for production
    • styling/customization of specific / custom widgets classes

Where to go next

Getting involved:
  • #kivy on freenode