Skip to main content

qt-jsonschema-form

A tool to generate Qt forms from JSON Schemas.

Features

Unsupported validators

Currently this tool does not support anyOf or oneOf directives. The reason for this is simply that these validators have different semantics depending upon the context in which they are found. Primitive support could be added with meta-widgets for type schemas.

Additionally, the $ref keyword is not supported. This will be fixed, but is waiting on some proposed upstream changes in jsonschema

Example

import sys
from json import dumps

from qtpy import QtWidgets

from qt_jsonschema_form import WidgetBuilder

if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)

    builder = WidgetBuilder()

    schema = {
        "type": "object",
        "title": "Number fields and widgets",
        "properties": {
            "schema_path": {
                "title": "Schema path",
                "type": "string"
            },
            "integerRangeSteps": {
                "title": "Integer range (by 10)",
                "type": "integer",
                "minimum": 55,
                "maximum": 100,
                "multipleOf": 10
            },
            "event": {
                "type": "string",
                "format": "date"
            },
            "sky_colour": {
                "type": "string"
            },
            "names": {
                "type": "array",
                "items": [
                    {
                        "type": "string",
                        "pattern": "[a-zA-Z\-'\s]+",
                        "enum": [
                            "Jack", "Jill"
                        ]
                    },
                    {
                        "type": "string",
                        "pattern": "[a-zA-Z\-'\s]+",
                        "enum": [
                            "Alice", "Bob"
                        ]
                    },
                ],
                "additionalItems": {
                    "type": "number"
                },
            }
        }
    }

    ui_schema = {
        "schema_path": {
            "ui:widget": "filepath"
        },
        "sky_colour": {
            "ui:widget": "colour"
        }

    }
    form = builder.create_form(schema, ui_schema)
    form.widget.state = {
        "schema_path": "some_file.py",
        "integerRangeSteps": 60,
        "sky_colour": "#8f5902",
        "names": [
            "Jack",
            "Bob"
        ]
    }
    form.show()
    form.widget.on_changed.connect(lambda d: print(dumps(d, indent=4)))

    app.exec_()

Notes

This package uses QtPy as an abstraction layer for PyQt5/PySide2/PyQt6/PySide6. One of those libraries must also be installed in order to function.

Release files for qt-jsonschema-form 1.0.0

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

Source distribution (sdist)

Source distribution for qt-jsonschema-form 1.0.0
File Size Uploaded
qt_jsonschema_form-1.0.0.tar.gz 240.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qt-jsonschema-form 1.0.0
File Interpreter ABI Platform
qt_jsonschema_form-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 250.1 kB

Release files / qt_jsonschema_form-1.0.0.tar.gz

Download URL qt_jsonschema_form-1.0.0.tar.gz
Size 240.6 kB
Tags Source
SHA-256 checksum
How to use checksums
f480f0087364f42967716fe598b6c1acbbc94a148247040292a0242b760cc5c6
BLAKE2b-256 checksum
How to use checksums
4c0abff9f18ff472eebafa8bcbbad33e52dedd2557b0200a64542a17f894d9a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release files / qt_jsonschema_form-1.0.0-py3-none-any.whl

Download URL qt_jsonschema_form-1.0.0-py3-none-any.whl
Size 9.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0a49600c5df41ee03bb1e811f8b23049615ca86f50e63c67e2304dc488a51f6b
BLAKE2b-256 checksum
How to use checksums
8b7ee0e7b87c482a789cc37f44d6da8fd6d9c9655fe367cd5e08a4d8a9e3006f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.6

Release history Release notifications | RSS feed

This release

1.0.0 This release

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