A tool to generate Qt forms from JSON Schema
Project description
qt-jsonschema-form
A tool to generate Qt forms from JSON Schemas.
Features
- Error messages from JSONSchema validation (see jsonschema).
- Widgets for file selection, colour picking, date-time selection (and more).
- Per-field widget customisation is provided by an additional ui-schema (inspired by https://github.com/mozilla-services/react-jsonschema-form).
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | f480f0087364f42967716fe598b6c1acbbc94a148247040292a0242b760cc5c6 |
|
MD5 | 85483e2ebf1a74c78ab6c59fa290f4c5 |
|
BLAKE2b-256 | 4c0abff9f18ff472eebafa8bcbbad33e52dedd2557b0200a64542a17f894d9a3 |
File details
Details for the file qt_jsonschema_form-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: qt_jsonschema_form-1.0.0-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a49600c5df41ee03bb1e811f8b23049615ca86f50e63c67e2304dc488a51f6b |
|
MD5 | 07e87af4ede419e18fd18761cf49669a |
|
BLAKE2b-256 | 8b7ee0e7b87c482a789cc37f44d6da8fd6d9c9655fe367cd5e08a4d8a9e3006f |