enaml-native
Build native mobile apps in python using enaml and native widgets!
The goal of this project is to be an alternative to using kivy for building mobile apps with python.
I made this because wanted to have a more "React Native" like environment that:
- Uses python
- Uses native widgets (Android / iOS)
- Can be run from Android Studio / XCode (ie no bootstraps)
- Uses enaml's models, and declarative and dynamic widget framework instead of kvlang
- Versioned "packages" and "recipes" than can be installed/updated/removed to make repeatable builds
Android apps are currently working and have a lot of components. iOS is currently broken, and is limited to only a few components at the moment
Docs and Examples
See the project site. There's also some short tutorials and examples on youtube.
Need help? Try the gitter group https://gitter.im/enaml-native/Lobby
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
- GoogleMap support via enaml-native-maps
- MPAndroidChart graphing via enaml-native-charts
- ZXing barcode scanning via enaml-native-barcode
- Iconfiy icons via enaml-native-icons
Created a package? Send a PR and add it here!
Features
- Enaml's features: declarative syntax, conditional and looper rendering, automatic data binding
- Layouts with flexbox
- Live app code reloading (like react-native's live reload)
- Versioned package management and native library linking
Apps
Apps using enaml-native can be found here.
Demos
- Try out the beta demo app here on google play
- Try out code without installing the android SDK or NDK via the Python Playground!
Thanks to
This project is built on top of several existing projects:
- enaml
- python-for-android
- pybridge
- react-native (inspiration)
- pyjnius
- kivy-ios