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: generates a stateless web application.
  • Web View mode: generates a web view application, which can be packaged as a local app (no need to start a web service).
  • Zero mode: generates a pure HTML file that can run directly in a browser without installing any dependencies.

📦 Installation

Zero mode:

pip install instaui -U
uv add instaui

web mode

pip install instaui[web] -U
uv add instaui[web]

Web View mode

pip install instaui[webview] -U
uv add instaui[webview]

🖥️ Quick Start

Install the TDesign UI library:

uv add instaui-tdesign[web]
# main.py
from instaui import ui
from instaui_tdesign import td

td.use(locale="en_US")

@ui.page('/')
def home():
    ui.text("Hello, world!")

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

📚 Getting Started

Below is a simple example of summing two numbers. The text color of the result changes dynamically based on whether the result is even or odd.

from instaui import ui
from instaui_tdesign import td

td.use(locale="en_US")

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

    # When num1 or num2 changes, result will be automatically recalculated
    @ui.computed
    def result(num1 = num1, num2 = num2):
        return num1 + num2

    # When result changes, text_color will be automatically updated
    @ui.computed
    def text_color(result = result):
        return "red" if result % 2 == 0 else "blue"

    # UI
    td.input_number(num1, theme="column")
    ui.text("+")
    td.input_number(num2, theme="column")
    ui.text("=")
    ui.text(result).style({"color": text_color})

# When deploying a web app, remove debug=True
ui.server(debug=True).run()

Replace ui.server().run() with ui.webview().run() to run in web view mode:

...

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

Methods bound with ui.computed are executed on the server side. If you want to run calculations on the client side, use ui.js_computed.

from instaui import ui
from instaui_tdesign import td

td.use(locale="en_US")

@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
    ...

...

In this case, all interactions are executed in the browser (client side). With zero mode, you can generate a pure HTML file that works without installing any dependencies:

from instaui import ui, zero
from instaui_tdesign import td

td.use(locale="en_US")

@ui.page('/')
def home():
    ...

zero().to_html(home, file='index.html')

Project details


Release history Release notifications | RSS feed

This version

0.9.0

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.9.0.tar.gz (378.0 kB view details)

Uploaded Source

Built Distribution

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

instaui-0.9.0-py3-none-any.whl (503.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: instaui-0.9.0.tar.gz
  • Upload date:
  • Size: 378.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.4 {"installer":{"name":"uv","version":"0.11.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for instaui-0.9.0.tar.gz
Algorithm Hash digest
SHA256 e4eb7c9746cf0ed0b3a47d20e2201e11c7ab6fb90820c7f4c1101e85c45e1628
MD5 c4f3ef040ee73d33cade622a012339ef
BLAKE2b-256 99c23abddaaf6513460621813e67a230fce6a93ec4c1e2c0a4b4bdca1b827913

See more details on using hashes here.

File details

Details for the file instaui-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: instaui-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 503.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.4 {"installer":{"name":"uv","version":"0.11.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for instaui-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5a0b159b4cd0c4d9f03e5b2cf045d2290ea7824260749fa3263f332ab8b9cd84
MD5 7f54326e9f729dce7bd7a414b9397014
BLAKE2b-256 a83db3134f6127ee153512b56d81ce83ed60f4ed1c4ed6525fc5d90763f71724

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