从JSON Schema生成Qt表单的工具
项目描述
qt-jsonschema-form
从JSON Schemas生成Qt表单的工具。
功能
- 来自JSONSchema验证的错误消息(见jsonschema)。
- 文件选择、颜色选择、日期时间选择(更多)等小部件。
- 通过额外的ui-schema提供字段小部件的自定义,灵感来自https://github.com/mozilla-services/react-jsonschema-form)。
不支持的验证器
目前此工具不支持 anyOf
或 oneOf
指令。原因很简单,这些验证器根据它们所在的上下文具有不同的语义。可以通过类型模式的元小部件添加原语支持。
此外,不支持 $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 查看散列值)