Toga supported platforms#

Official platform support#

Desktop platforms#

macOS#

../_images/cocoa.png

The backend for macOS is named toga-cocoa. It supports macOS 10.10 (Yosemite) and later. It is installed automatically on macOS machines (machines that report sys.platform == 'darwin'), or can be manually installed by invoking:

$ pip install toga-cocoa

The macOS backend has seen the most development to date. It uses Rubicon to provide a bridge to native macOS libraries.

Linux#

../_images/gtk.png

The backend for Linux platforms is named toga-gtk. It supports GTK 3.4 and later. It is installed automatically on Linux machines (machines that report sys.platform == 'linux'), or can be manually installed by invoking:

$ pip install toga-gtk

The GTK backend is reasonably well developed, but currently has some known issues with widget layout. It uses the native GObject Python bindings.

Windows#

../_images/winforms.png

The backend for Windows is named toga-winforms. It supports Windows 10 with .NET 4 installed. It is installed automatically on Windows machines (machines that report sys.platform == 'win32'), or can be manually installed by invoking:

$ pip install toga-winforms

It uses Python.net. Unfortunately, python.net has not been packaged for Python 3.9 or higher, so you’ll need to use Python 3.8 or earlier in your app.

Mobile platforms#

iOS#

The backend for iOS is named toga-iOS. It supports iOS 6 or later. It must be manually installed into an iOS Python project (such as one that has been developed using the Python-iOS-template cookiecutter). It can be manually installed by invoking:

$ pip install toga-iOS

The iOS backend is currently proof-of-concept only. Most widgets have not been implemented. It uses Rubicon to provide a bridge to native macOS libraries.

Android#

The backend for Android is named toga-android. It can be manually installed by invoking:

$ pip install toga-android

The android backend is currently proof-of-concept only. Most widgets have not been implemented. It uses Chaquopy to provide a way to access the Android Java libraries and implement Java interfaces in Python.

Web#

The Web backend is named toga-web. It can be manually installed by invoking:

$ pip install toga-web

The Web backend is currently proof-of-concept only. Most widgets have not been implemented. It uses PyScript to run Python code in the browser.

The Dummy platform#

Toga also provides a Dummy platform - this is a backend that implements the full interface required by a platform backend, but does not display any widgets visually. It is intended for use in tests, and provides an API that can be used to verify widget operation.

Planned platform support#

Eventually, the Toga project would like to provide support for the following platforms:

  • UWP (Native Windows 8 and Windows mobile)

  • Qt (for KDE based desktops)

  • tvOS (for AppleTV devices)

  • watchOS (for AppleWatch devices)

  • Curses (for console)

If you are interested in these platforms and would like to contribute, please get in touch on Twitter or Discord).

Unofficial platform support#

At present, there are no known unofficial platform backends.