Skip to main content

User Generated Form Component for NiceGUI Framework

Project description

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

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.

Project details


Download files

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

Source Distribution

nicegui_ugform-1.0.0.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

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

nicegui_ugform-1.0.0-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

Details for the file nicegui_ugform-1.0.0.tar.gz.

File metadata

  • Download URL: nicegui_ugform-1.0.0.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.9 Windows/11

File hashes

Hashes for nicegui_ugform-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f907b7f37f6d7f76afeca55f73652c0cf57b3d8430c88ad285d78cec3f88fb6a
MD5 6a5abe1773e58493039c6710b495a7af
BLAKE2b-256 64726139727cf474c1a873bd4b5bf834ec01a3a666b2342081517ea46985752f

See more details on using hashes here.

File details

Details for the file nicegui_ugform-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: nicegui_ugform-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 17.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.9 Windows/11

File hashes

Hashes for nicegui_ugform-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 280c1cd440870503e6590631f1cf36b9ea7d9b7c2de00b050e7d8be8e6dfcfd9
MD5 d105aae12b56565a635348dc7bc300de
BLAKE2b-256 0d7fc5526ef6d02e36044ad93b1bef4b1f5a1c927f53e8f57b34efdc5cec369a

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