A set of tools which simplify building cross-platform desktop apps with Python, JavaScript, HTML & CSS.
Project description
aiodesktop
A set of tools which simplify building cross-platform desktop apps with Python, JavaScript, HTML & CSS.
Features
In contrast to typical desktop GUI frameworks such as tkinter, wxPython, PyQt or Kivy:
- does not define own widgets/layout system (Kivy, Qt, wx), simply use a browser as a platform which already provides those things
- reuse time-saving libraries like React, Bootstrap or Highcharts
- reuse technologies like WebRTC, WebGL, WebAssembly
- access platform features such as cameras, geolocation and others
- your app is client-server and cross-platform by design, different devices may use it simultaneously
Compared to existing alternatives such as Eel, async-eel and guy:
- runs on asyncio instead of threads or gevent greenlets
- highly customizable aiohttp server
- no global state / singleton API
Install
Install from pypi with pip:
pip install aiodesktop
Hello, World!
import aiodesktop
class Server(aiodesktop.Server):
async def on_startup(self):
aiodesktop.launch_chrome(self.start_uri)
# Use `expose` decorator to mark method as visible from JS
@aiodesktop.expose
async def get_string(self):
# Use `await self.js.xxx()` to call JS functions from Python
return 'Hello, ' + await self.js.getWorld()
bundle = aiodesktop.Bundle()
server = Server(
bundle=bundle,
init_js_function='onConnect',
index_html='''<html><body><script>
async function onConnect(server) {
// Exposing JS function to python
server.expose({
async getWorld() {
return 'World!'
}
});
// Use `await server.py.xxx()` to call Python methods from JS
document.body.innerHTML += await server.py.get_string();
};
</script></body></html>''',
)
server.run()
See example/ for a slightly more complicated app with:
- static files
- pyinstaller executable
- JS & webpack
- https
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aiodesktop-0.1.3.tar.gz.
File metadata
- Download URL: aiodesktop-0.1.3.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/44.1.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35dd3b41762ef300c3b07a865d5c43f2adfb36c4484a9e9bc792d92f3611f8e2
|
|
| MD5 |
6147829e340ca629f1816e488ee3e3dc
|
|
| BLAKE2b-256 |
c0c9ae48412c708a4fdfd0b519e9fb55811558cf2a73c1bd56ab9e1b1edf625a
|
File details
Details for the file aiodesktop-0.1.3-py3-none-any.whl.
File metadata
- Download URL: aiodesktop-0.1.3-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/44.1.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
92811ab960cf6cdefd4a0c5a051a76734a436051568257272acefe4f1f9f197a
|
|
| MD5 |
b6bfb31df0c6149241259f19f3afc2ca
|
|
| BLAKE2b-256 |
97c3b40e0bc30b743f9f44670c5c2438dcc428c12ce1c370a5ba017e4d2e1f41
|