Skip to main content

NiceGUI-UGForm

Form Builder Component for NiceGUI Framework
适用于 NiceGUI 框架的表单构建器组件

PyPI - Version PyPI - Downloads

Introduction

This Python library provides a flexible form builder for the NiceGUI framework. It allows the user to create a user-generated form (UGForm) via NiceGUI, easily serialize/deserialize form schemas and display them.

Features

  • Easy Serialization: Export/import form schemas as JSON or compressed Base64 strings.
  • Interactive UI: Built-in form editor and display components for NiceGUI.
  • Built-in I18N: Supports multiple languages (currently English and Chinese).
  • Well-Designed: Follows best practices such as type annotations.

Currently supported field types:

Field Type Validation Approaches
TextField min/max length, regex pattern
IntegerField min/max value
FloatField min/max value
BooleanField -

Demo

See demo.py for a complete example about what can it do.

Form Editor Form Display
Form Editor Demo Form Display Demo

Changelog

See CHANGELOG.md to understand the changes of every release version.

Get Started

Installation

Install from PyPI:

pip install nicegui_ugform

Minimal Example

Here's a simple example to get started:

from nicegui import ui
from nicegui_ugform import Form, FormEditor, FormDisplay, TextField, IntegerField

# Create a form
form = Form(
    title="Registration Form",
    description="Please fill out your information",
    locale="en"  # or "zh_cn" for Chinese
)

# Add fields
form.add_field(TextField(
    name="username",
    label="Username",
    required=True,
    min_length=3,
    max_length=20
))

form.add_field(IntegerField(
    name="age",
    label="Age",
    required=True,
    min_value=18,
    max_value=120
))

# Create pages
@ui.page('/')
def index():
    # Form Editor - allows users to modify form structure
    editor = FormEditor(form)
    editor.render()

@ui.page('/display')
def display():
    # Form Display - shows the form to end users
    def on_submit():
        data = form.dump_data()
        print("Submitted data:", data)
    
    display = FormDisplay(form, on_submit=on_submit)
    display.render()

ui.run()

Usage

Schema Serialization

You can export and import form schemas:

# Export as JSON
schema = form.dump_schema()

# Export as compressed Base64
schema_b64 = form.dump_schema_b64(compression_flag=1)

# Import from JSON
loaded_form = Form.load_schema(schema)

# Import from Base64
loaded_form = Form.load_schema_b64(schema_b64)

I18N Support

You can use different locales for the form editor and display:

from nicegui_ugform import FormEditor, I18nHelper

# Get available locales
locales = I18nHelper.get_available_locales()
for loc in locales:
    print(f"{loc.name}: {loc.code}")  # English: en, Chinese (Simplified): zh_cn

# Use specific locale
editor = FormEditor(form, locale="zh_cn")

# Form locale is saved in schema and auto-applied on display
form.locale = "zh_cn"
display = FormDisplay(form)  # Will use zh_cn automatically

Field Types

TextField - Text input with validation

TextField(
    name="email",
    label="Email",
    required=True,
    regex=r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"
)

IntegerField - Integer number input

IntegerField(
    name="age",
    label="Age",
    min_value=0,
    max_value=150
)

FloatField - Decimal number input

FloatField(
    name="height",
    label="Height (m)",
    min_value=0.0,
    max_value=3.0
)

BooleanField - Checkbox input

BooleanField(
    name="subscribe",
    label="Subscribe to newsletter",
    default_value=False
)

Licensing

This project is licensed under the MIT License. See the License file for more details.

Release files for NiceGui-UGForm 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for NiceGui-UGForm 1.1.1
File Size Uploaded
nicegui_ugform-1.1.1.tar.gz 14.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for NiceGui-UGForm 1.1.1
File Interpreter ABI Platform
nicegui_ugform-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 34.1 kB

Release files / nicegui_ugform-1.1.1.tar.gz

Download URL nicegui_ugform-1.1.1.tar.gz
Size 14.7 kB
Tags Source
SHA-256 checksum
How to use checksums
6901f93e156f7ca810560c6a596d3b6347c480d46165524239ad5f0627f0b094
BLAKE2b-256 checksum
How to use checksums
bbe734c1187a2c019bb0982d52b328c8bf155ac776ea73d94f7f7e5133742548
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.12.9 Windows/11

Release files / nicegui_ugform-1.1.1-py3-none-any.whl

Download URL nicegui_ugform-1.1.1-py3-none-any.whl
Size 19.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1a07d23e5613b4eda8f396c62caf379727b3d228a2055ecd00bbdd2e0f95c6da
BLAKE2b-256 checksum
How to use checksums
f940280052b8a7a36b3997f27f12d1322efed690cc7e268e49710a3e31109842
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.12.9 Windows/11

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page