GUIs & Games

Kivy

Writes one app that runs on your phone, your laptop, and even a touchscreen kiosk, from a single codebase.

Install it: pip install kivy

What does it do?

Kivy lets you build an app’s buttons, screens, and touch gestures once and then run that same app on Windows, Mac, Linux, Android, and iOS, handling the very different ways each platform receives touch and click input. It’s like designing a single restaurant menu that automatically reformats itself perfectly whether it’s printed on paper, shown on a tablet at the table, or displayed on a drive-through screen. It’s especially known for handling multitouch gestures well, pinching, swiping, multiple fingers at once, which made it popular for interactive kiosks and touchscreen installations. It uses its own custom design language, called kv, to describe how an app’s interface should look and behave.

See it in action

This launches an app window containing a single clickable button that says hello.

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

class MyApp(App):
    def build(self):
        return Button(text="Hello, Kivy!")

MyApp().run()

Why would a non-developer care?

For a small team or solo developer without resources to build separate apps per platform, writing the interface once and deploying nearly everywhere is a genuine time and cost saver. It matters to anyone who’s been frustrated that an app feels different, or is missing entirely, depending on what device they’re using.

Real-world examples

Kivy has been used to build point-of-sale systems, interactive museum kiosks, and cross-platform hobbyist apps that needed to run identically on a tablet and a desktop. It’s a common choice among Python developers who want to avoid learning platform-specific tools like Swift for iOS or Kotlin for Android. It also has a companion tool, Buildozer, specifically for packaging Kivy apps into installable Android and iOS applications.

Who uses it

Developers building cross-platform touch-based apps, kiosk software, and prototypes that need to run on both desktop and mobile without separate codebases.

How it compares to alternatives

Kivy trades the native look and feel that platform-specific frameworks provide for the convenience of one shared codebase, putting it in similar territory to Flutter or React Native, though those are far more popular and better resourced outside the Python world.

New to Python and want to actually try libraries like this yourself?

Find a beginner-friendly course

Related libraries