跳转到主要内容

从JSON Schema生成Qt表单的工具

项目描述

qt-jsonschema-form

从JSON Schemas生成Qt表单的工具。

功能

不支持的验证器

目前此工具不支持 anyOfoneOf 指令。原因很简单,这些验证器根据它们所在的上下文具有不同的语义。可以通过类型模式的元小部件添加原语支持。

此外,不支持 $ref 关键字。这将得到修复,但正在等待 jsonschema 上游的一些提议性更改。

示例

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_()

注释

此软件包使用QtPy作为PyQt5/PySide2/PyQt6/PySide6的抽象层。还必须安装其中之一库才能正常工作。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

qt_jsonschema_form-1.0.0.tar.gz (240.6 kB 查看散列值)

上传时间

构建分发

qt_jsonschema_form-1.0.0-py3-none-any.whl (9.5 kB 查看散列值)

上传时间 Python 3

由以下支持