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

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.

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.1.0.tar.gz (14.2 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.1.0-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nicegui_ugform-1.1.0.tar.gz
  • Upload date:
  • Size: 14.2 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.1.0.tar.gz
Algorithm Hash digest
SHA256 d2887f717367d75ad2caafa236f2f859fc3a4ac2a3099674ba73fe77812ac55a
MD5 5c2a9e612b8ac75ccf7ce1762481a187
BLAKE2b-256 2689d38a7591fb916c9ea40ef9d558a19ab476f3431161c5a199004f5dfe69ac

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nicegui_ugform-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.9 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eefe0c823e2f5c52f2063416a2baddf3411b253bc9c5073946e194da48210a05
MD5 05afd8358351b3ee8aa4e985351e3d03
BLAKE2b-256 814490600ec7b8623fc638185955b9b70814f55d0042d704bde26b4370a130ce

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