Skip to main content

A set of tools which simplify building cross-platform desktop apps with Python, JavaScript, HTML & CSS.

Project description

aiodesktop

Latest version on PyPi Supported Python versions CircleCI

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
  • 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

aiodesktop-0.1.3.tar.gz (15.0 kB view hashes)

Uploaded source

Built Distribution

aiodesktop-0.1.3-py3-none-any.whl (16.4 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page