Skip to main content

insta-ui is a Python-based UI library for rapidly building user interfaces.

Project description

insta-ui

English| 简体中文

📖 Introduction

insta-ui is a Python-based UI library for quickly building user interfaces.

⚙️ Features

Three modes:

  • Web mode: Generate web (stateless) applications.
  • Web View mode: Generate web view applications that can be packaged as native apps (no need to start a web server).
  • Zero mode: Generate pure HTML files that run directly in browsers without any dependencies.

📦 Installation

Zero mode:

pip install instaui -U

web mode

pip install instaui[web] -U

Web View mode

pip install instaui[webview] -U

🖥️ Quick Start

Below is a simple example of number summation. The result color changes dynamically based on the sum:

from instaui import ui, arco
arco.use()

@ui.page('/')
def home():
    num1 = ui.state(0)
    num2 = ui.state(0)

    # Automatically recalculates result when num1 or num2 changes 
    @ui.computed(inputs=[num1, num2])
    def result(num1: int, num2: int):
        return num1 + num2

    # Automatically updates text_color when result changes
    @ui.computed(inputs=[result])
    def text_color(result: int):
        return "red" if result % 2 == 0 else "blue"

    # UI components  
    arco.input_number(num1)
    ui.label("+")
    arco.input_number(num2)
    ui.label("=")
    ui.label(result).style({"color": text_color})

# when you deploy your web application, you need to set debug=False.
ui.server(debug=True).run()

Replace ui.server().run() with ui.webview().run() to switch to Web View mode:

...

# ui.server(debug=True).run()
ui.webview().run()

To execute computations on the client side instead of the server, use ui.js_computed instead of ui.computed:

from instaui import ui, arco
arco.use()

@ui.page('/')
def home():
    num1 = ui.state(0)
    num2 = ui.state(0)

    result = ui.js_computed(inputs=[num1, num2], code="(num1, num2) => num1 + num2")
    text_color = ui.js_computed(inputs=[result], code="(result) => result % 2 === 0? 'red' : 'blue'")

    # UI components
    ...

...

In this case, all interactions will run on the client side. Use Zero mode to generate a standalone HTML file:

from instaui import ui, arco,zero
arco.use()

@ui.page('/')
def home():
    num1 = ui.state(0)
    num2 = ui.state(0)

    result = ui.js_computed(inputs=[num1, num2], code="(num1, num2) => num1 + num2")
    text_color = ui.js_computed(inputs=[result], code="(result) => result % 2 === 0? 'red' : 'blue'")

    # UI components
    arco.input_number(num1)
    ui.label("+")
    arco.input_number(num2)
    ui.label("=")
    ui.label(result).style({"color": text_color})

with zero() as z:
    home()
    z.to_html('index.html')

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

instaui-0.2.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

instaui-0.2.0-py2.py3-none-any.whl (1.4 MB view details)

Uploaded Python 2Python 3

File details

Details for the file instaui-0.2.0.tar.gz.

File metadata

  • Download URL: instaui-0.2.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.6

File hashes

Hashes for instaui-0.2.0.tar.gz
Algorithm Hash digest
SHA256 be5fe83df87d463d6d5c4154f9d285d78aba0d31c9d02bee2649a86bd7be9cc0
MD5 39f8518321028b02387c25574eb5ef2f
BLAKE2b-256 e4a0a3ce069bc9795d0182bc224f9445adb298da50fe7bda53df7cf2e0ae25cb

See more details on using hashes here.

File details

Details for the file instaui-0.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: instaui-0.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.6

File hashes

Hashes for instaui-0.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0bcf2336e8f768b029b63d0435cea4473e7d5ae00a87d998de5b7aefff5307ab
MD5 4dec10c57d9ca71eb48d0e31e385468e
BLAKE2b-256 37ea3d7bdaf190a5b8f414f624488078ec76cfe5bcfbd5a546d479c9812069da

See more details on using hashes here.

Supported by

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