Skip to main content

A tool to generate Qt forms from JSON Schema

Project description

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.

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

qt_jsonschema_form-1.0.0.tar.gz (240.6 kB view details)

Uploaded Source

Built Distribution

qt_jsonschema_form-1.0.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qt_jsonschema_form-1.0.0.tar.gz
  • Upload date:
  • Size: 240.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for qt_jsonschema_form-1.0.0.tar.gz
Algorithm Hash digest
SHA256 f480f0087364f42967716fe598b6c1acbbc94a148247040292a0242b760cc5c6
MD5 85483e2ebf1a74c78ab6c59fa290f4c5
BLAKE2b-256 4c0abff9f18ff472eebafa8bcbbad33e52dedd2557b0200a64542a17f894d9a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qt_jsonschema_form-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0a49600c5df41ee03bb1e811f8b23049615ca86f50e63c67e2304dc488a51f6b
MD5 07e87af4ede419e18fd18761cf49669a
BLAKE2b-256 8b7ee0e7b87c482a789cc37f44d6da8fd6d9c9655fe367cd5e08a4d8a9e3006f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page