Skip to main content

Build native mobile apps in python

Project description

enaml-native

Build native mobile apps in python using enaml and native widgets! Build Status codecov Help chat Documentation Status

The goal of this project is to be the python version of react-native. It targets apps that need to have a "native" look and feel and achieves this by reusing existing native Android and iOS widgets from python. It allows you to declaratively define a UI using python based language called enaml. The rest is "normal" python.

Kivy is still recommended for games and applications that need custom widgets that native Android and iOS libraries do not provide.

This is still a very young project but the results and feedback have been positive and promising. Thanks for dropping by!

Docs and Examples

See the project site or the api docs

There's also some short tutorials and examples on youtube.

Need help? Try the gitter group https://gitter.im/enaml-native/Lobby

Screenshots

Drawer Demo

Add-on Packages

Enaml-native was redesigned so separate "packages" can be created and installed to add new native widgets and other apis. Similar to the kivy-garden but it borrows the concepts of the react-native package manager.

Packages can be created using the enaml-native init-package <your-package-name> command. Once made they can be installed with pip or the enaml-native install command (recommended).

Packages

Created a package? Send a PR and add it here!

Features

  1. Enaml's features: declarative syntax, conditional and looper rendering, automatic data binding
  2. Layouts with flexbox
  3. Live app code reloading (like react-native's live reload)
  4. Versioned package management and native library linking
  5. Remote debugging with your favorite IDE (like react-native's remote debugger)

Apps

Apps using enaml-native can be found here.

Demos

  1. Try out the beta demo app here on google play
  2. Try out code without installing the android SDK or NDK via the Python Playground!

Status

Android

Currently enaml-native's Android support is good enough to make real usable app. A lot of components are supported and several apps have already been released using enaml-native.

iOS

Currently enaml-native's iOS support is not yet good enough to make a real app. Only a few components are implemented at the moment and a lot of work is needed to get it to the point where it's really usable, but my "proof of concept" demo shows that it does work.

Thanks to

This project is built on top of several existing projects:

  1. enaml
  2. python-for-android
  3. pybridge
  4. react-native (inspiration)
  5. pyjnius
  6. kivy-ios

Please give them a star, thanks, and/or donation as without these this project would not exist!

Contributions

Contributions of any kind are welcome. Please use the numpydoc format for docstrings and the pep-8 code style to be consistent with enaml.

Donate

This is a project I develop in my free time. If you use enaml-native or simply like the project and want to help continue the development of it please consider donating.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

enaml_native-4.5.4-py2.py3-none-any.whl (280.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file enaml_native-4.5.4-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for enaml_native-4.5.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 8ec43c20c81dd72d2e364de9fb35710bb36f7f5d43c00ffc75fe9e61d53edc42
MD5 ca4d5f21b23d0116dd150ce9b54eff65
BLAKE2b-256 5f0d5b09d49fdc6a86ae77515d2d22a4afa1bbcaa5877f5535274dd5cb67a55b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page