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.text("+")
arco.input_number(num2)
ui.text("=")
ui.text(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.text("+")
arco.input_number(num2)
ui.text("=")
ui.text(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
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 instaui-0.4.2.tar.gz.
File metadata
- Download URL: instaui-0.4.2.tar.gz
- Upload date:
- Size: 560.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d85bc5127017ab21daf2684cc57d85672de388f6039f8444b87a731b6d11bc32
|
|
| MD5 |
34fa891b681ac3fa258312be4fb1b9e2
|
|
| BLAKE2b-256 |
47553f0fa3ece818075082fd474a2cb46ad0bb377e83024115a9b2dd85b5d4af
|
File details
Details for the file instaui-0.4.2-py3-none-any.whl.
File metadata
- Download URL: instaui-0.4.2-py3-none-any.whl
- Upload date:
- Size: 633.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a1e66e7948ee3c3102e86f3fbf7c4fb853152f50790702c6a73f9df4f76b4f0
|
|
| MD5 |
70fe797435b6ce978b1cb79681336a12
|
|
| BLAKE2b-256 |
c05df5d4fced486c9f4484ee51f32bb75c41d3f8d09be17db807e95a6a9899b7
|