Guide · Open source
How to use Kivy: install, build your first app and tips
Updated · written with AI from the project's own documentation and checked against our catalogue data
Kivy is an open-source Python framework for building graphical apps that run on Windows, macOS, Linux, Android and iOS from a single codebase. This guide is for Python developers who want to install Kivy, understand what it is built for, and know where to find the official tutorials and examples. By the end you will know how to set it up and where to go next.
Quick start
- 1Check your Python version. Kivy requires Python 3. Confirm you have a Python 3 interpreter installed before continuing.
- 2Install Kivy from PyPI. Run pip install kivy in your terminal to install the framework from the Python Package Index.
- 3Open the documentation. Visit https://www.kivy.org/docs for installation details, tutorials and the API reference.
- 4Run the examples. Open the examples folder included with Kivy and run a few samples to see widgets in action.
- 5Build a small app. Start with a simple window and one or two widgets, then extend it as you learn the layout system.
What is Kivy and what is it good for?
Kivy is written in Python and Cython and is built on OpenGL ES 2.0. Its stated aim is to allow quick and easy interaction design and rapid prototyping while keeping your code reusable and deployable.
The same codebase can target Windows, macOS, Linux (including Raspberry Pi OS), Android and iOS. All Kivy widgets are built with multitouch support, and the framework supports various input devices.
- One codebase for desktop, mobile and embedded platforms
- Widget library with multitouch support
- Suited to rapid interface prototyping
Install Kivy with pip
Kivy requires Python 3. Install it from PyPI using pip. The official installation instructions with platform-specific detail are at https://www.kivy.org/docs.
pip install kivyRun the bundled examples
Kivy ships with many examples in the examples folder of the project. Reading and running them is a practical way to see how widgets and layouts fit together before you write your own app.
The full documentation, tutorials and API reference are available at https://www.kivy.org/docs, and a PDF version is also provided.
- Look in the examples folder of the Kivy repository
- Read the API reference for widget details
- Use the PDF version for offline reading
Know the limits before you start
Kivy draws its own widgets rather than using native platform controls. If you need an app that looks exactly like the native system interface, another toolkit may fit better. The README does not discuss this in detail, so check the documentation for your specific needs.
Kivy targets desktop, mobile and embedded platforms. If your project is web-only, Kivy is not the right tool.
- Draws its own widgets, not native platform widgets
- Not intended for web-only apps
- Requires writing Python code
Get help and contribute
If you run into trouble, the project lists its support channels in the Contact Us document in the repository. Contributions are welcome, and the Contributing guide explains how to get involved.
Kivy is part of a wider ecosystem of sibling projects, including Buildozer for packaging Python apps and Plyer for accessing hardware features across platforms.
- Support channels: see CONTACT.md in the repository
- Contribution guide: see CONTRIBUTING.md
- Buildozer packages Python apps for installation on several platforms
What people use it for
- Prototyping touch-friendly interfaces quickly
- Shipping the same Python app to desktop and mobile
- Building interfaces for Raspberry Pi OS or other embedded Linux devices
- Creating multitouch input experiences
Frequently asked questions
Is Kivy free to use?
Yes. Kivy is released under the MIT License, as described in the LICENSE file of the project. The provided fonts Roboto and Roboto Mono are under Apache License 2.0, and the UI design is under LGPLv2.1.
How do I install Kivy?
Install it with pip using the command pip install kivy. Kivy requires Python 3. Full installation instructions are at https://www.kivy.org/docs.
What platforms does Kivy run on?
The README says the same codebase can target Windows, macOS, Linux including Raspberry Pi OS, Android and iOS.
Does Kivy use native widgets?
No. Kivy draws its own widgets, so its look is not the native platform look. This is inferred from its OpenGL-based design rather than stated directly in the README.
How does Kivy compare to Tkinter or PyQt?
Kivy focuses on cross-platform apps including mobile, with multitouch support built into its widgets. Tkinter, PyQt and wxPython are other Python GUI options worth comparing for your needs, and BeeWare is another cross-platform option.
Where can I get help if something breaks?
The project lists its support channels in the Contact Us document in the repository, and volunteers are available to help with trouble using Kivy.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
Kivy suits Python developers who want one codebase for desktop, mobile and embedded apps, and who are happy with custom-drawn touch-friendly interfaces. Pick something else if you need native-looking widgets, web-only apps, or you want to avoid Python.
Install options & downloads