Windows-only Python SDK for rendering JSON Schema forms in WebView2
Project description
XBot Form
Windows-only Python SDK for rendering JSON Schema forms in WebView2.
Features
- 🎨 JSON Schema Forms - Render dynamic forms from JSON Schema definitions
- 🖥️ Native Windows UI - Uses WebView2 for modern, native-feeling interfaces
- 🎯 Type-Safe API - Configuration classes with IDE autocompletion support
- 🔗 Fluent Builder - Chainable API for easy form configuration
- 🌙 Theme Support - Light and dark mode themes
- 🪟 Frameless Windows - Optional borderless windows with rounded corners
Installation
pip install xbot-form
Requirements:
- Windows 10/11
- Python 3.8+
- WebView2 Runtime (usually pre-installed on Windows 10/11)
Quick Start
Basic Usage
from xbot_form import show_form, FormCancelledError
schema = {
"type": "object",
"properties": {
"name": {"type": "string", "title": "Name"},
"email": {"type": "string", "title": "Email", "format": "email"},
},
"required": ["name", "email"]
}
try:
result = show_form(schema=schema, title="User Registration")
print(f"User submitted: {result}")
except FormCancelledError:
print("User cancelled the form")
Builder Pattern (Recommended)
from xbot_form import form_builder, FormCancelledError
try:
result = (
form_builder()
.schema({
"type": "object",
"properties": {
"username": {"type": "string", "title": "Username"},
"password": {"type": "string", "title": "Password"},
}
})
.ui_schema({
"password": {"ui:widget": "password"}
})
.title("Login")
.size(600, 400)
.frameless(corner_radius=16)
.theme("dark")
.show()
)
print(f"Login: {result}")
except FormCancelledError:
print("Login cancelled")
Configuration Classes
from xbot_form import (
show_form_with_config,
FormConfig,
WindowOptions,
DisplayOptions,
FormCancelledError
)
config = FormConfig(
schema={
"type": "object",
"properties": {
"task": {"type": "string", "title": "Task Name"},
"priority": {
"type": "string",
"title": "Priority",
"enum": ["Low", "Medium", "High"]
}
}
},
window=WindowOptions(
width=800,
height=600,
title="New Task",
frameless=True,
corner_radius=12
),
display=DisplayOptions(
theme="light",
debug=False
)
)
try:
result = show_form_with_config(config)
print(f"Task created: {result}")
except FormCancelledError:
print("Cancelled")
API Reference
Functions
| Function | Description |
|---|---|
show_form(...) |
Display a form with individual parameters |
show_form_with_config(config) |
Display a form using FormConfig object |
form_builder() |
Create a FormBuilder for fluent configuration |
Configuration Classes
| Class | Description |
|---|---|
FormConfig |
Complete form configuration |
FormSchema |
JSON Schema with optional UI schema |
WindowOptions |
Window size, title, frameless settings |
DisplayOptions |
Theme, debug mode, locale settings |
FormBuilder |
Fluent builder for form configuration |
Exceptions
| Exception | Description |
|---|---|
XBotFormError |
Base exception for all SDK errors |
FormCancelledError |
User cancelled or closed the form |
FormTimeoutError |
Form display timed out |
WebViewError |
WebView2 initialization error |
WebViewNotAvailableError |
WebView2 runtime not installed |
WindowError |
Window creation error |
Parameters
show_form()
| Parameter | Type | Default | Description |
|---|---|---|---|
schema |
dict |
None |
JSON Schema for the form |
title |
str |
None |
Window title |
width |
int |
1000 |
Window width in pixels |
height |
int |
800 |
Window height in pixels |
frameless |
bool |
False |
Borderless window mode |
corner_radius |
int |
0 |
Corner radius for frameless windows |
debug |
bool |
False |
Enable DevTools |
theme |
str |
"light" |
Color theme ("light" or "dark") |
License
MIT License - see LICENSE for details.
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
xbot_form-0.2.4.tar.gz
(353.0 kB
view details)
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
xbot_form-0.2.4-py3-none-any.whl
(357.4 kB
view details)
File details
Details for the file xbot_form-0.2.4.tar.gz.
File metadata
- Download URL: xbot_form-0.2.4.tar.gz
- Upload date:
- Size: 353.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.13.2 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7805424d6ae212ad459340e45f2e9cb625cf25d11f2ba50c02bd2b91d3d74c22
|
|
| MD5 |
1b297483c70d3cb97f6ca08f9520eaf6
|
|
| BLAKE2b-256 |
e7421f77b2c4e548c95efa05246ed5bb061f76f56916b717537f5c3c5135254e
|
File details
Details for the file xbot_form-0.2.4-py3-none-any.whl.
File metadata
- Download URL: xbot_form-0.2.4-py3-none-any.whl
- Upload date:
- Size: 357.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.1 CPython/3.13.2 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d7cb1b07eca3709997c9d5163e18db74bf13b13b76ba3ae07baf23f4aa222ff
|
|
| MD5 |
ae247148fa8e6d29622746069b98a174
|
|
| BLAKE2b-256 |
01f5eee316e00008be222666e7d768a016e3d1f68b698ea8d374621f6562588d
|