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_url)

    # 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()

server = Server()
server.configure(
    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()

Project details


Download files

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

Files for aiodesktop, version 0.1.2
Filename, size File type Python version Upload date Hashes
Filename, size aiodesktop-0.1.2-py3-none-any.whl (16.1 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size aiodesktop-0.1.2.tar.gz (14.7 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page