{"id":15013037,"url":"https://github.com/agoose77/qt-jsonschema-form","last_synced_at":"2025-07-31T02:34:30.743Z","repository":{"id":76067556,"uuid":"139704729","full_name":"agoose77/qt-jsonschema-form","owner":"agoose77","description":"Qt JSON Schema form generator","archived":false,"fork":false,"pushed_at":"2023-01-28T21:50:43.000Z","size":21,"stargazers_count":20,"open_issues_count":2,"forks_count":16,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-12T04:31:47.331Z","etag":null,"topics":["editor","form","jsonschema","python","schema","ui-generator"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/agoose77.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-04T10:07:24.000Z","updated_at":"2024-09-06T02:25:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"92c3882a-5012-415d-93db-f9e8a56e49c3","html_url":"https://github.com/agoose77/qt-jsonschema-form","commit_stats":{"total_commits":14,"total_committers":2,"mean_commits":7.0,"dds":0.0714285714285714,"last_synced_commit":"fc0faab5b2635449eef6e6e3fbda1352a6f28203"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/agoose77/qt-jsonschema-form","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agoose77%2Fqt-jsonschema-form","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agoose77%2Fqt-jsonschema-form/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agoose77%2Fqt-jsonschema-form/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agoose77%2Fqt-jsonschema-form/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/agoose77","download_url":"https://codeload.github.com/agoose77/qt-jsonschema-form/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/agoose77%2Fqt-jsonschema-form/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267978018,"owners_count":24175241,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-31T02:00:08.723Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["editor","form","jsonschema","python","schema","ui-generator"],"created_at":"2024-09-24T19:43:38.506Z","updated_at":"2025-07-31T02:34:30.680Z","avatar_url":"https://github.com/agoose77.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# qt-jsonschema-form\nA tool to generate Qt forms from JSON Schemas. \n\n## Features\n* Error messages from JSONSchema validation ([see jsonschema](https://github.com/Julian/jsonschema)).\n* Widgets for file selection, colour picking, date-time selection (and more).\n* Per-field widget customisation is provided by an additional ui-schema (inspired by https://github.com/mozilla-services/react-jsonschema-form).\n\n## Unsupported validators\nCurrently 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.\n\nAdditionally, the `$ref` keyword is not supported. This will be fixed, but is waiting on some proposed upstream changes in `jsonschema`\n\n## Example\n```python3\nimport sys\nfrom json import dumps\n\nfrom qtpy import QtWidgets\n\nfrom qt_jsonschema_form import WidgetBuilder\n\nif __name__ == \"__main__\":\n    app = QtWidgets.QApplication(sys.argv)\n\n    builder = WidgetBuilder()\n\n    schema = {\n        \"type\": \"object\",\n        \"title\": \"Number fields and widgets\",\n        \"properties\": {\n            \"schema_path\": {\n                \"title\": \"Schema path\",\n                \"type\": \"string\"\n            },\n            \"integerRangeSteps\": {\n                \"title\": \"Integer range (by 10)\",\n                \"type\": \"integer\",\n                \"minimum\": 55,\n                \"maximum\": 100,\n                \"multipleOf\": 10\n            },\n            \"event\": {\n                \"type\": \"string\",\n                \"format\": \"date\"\n            },\n            \"sky_colour\": {\n                \"type\": \"string\"\n            },\n            \"names\": {\n                \"type\": \"array\",\n                \"items\": [\n                    {\n                        \"type\": \"string\",\n                        \"pattern\": \"[a-zA-Z\\-'\\s]+\",\n                        \"enum\": [\n                            \"Jack\", \"Jill\"\n                        ]\n                    },\n                    {\n                        \"type\": \"string\",\n                        \"pattern\": \"[a-zA-Z\\-'\\s]+\",\n                        \"enum\": [\n                            \"Alice\", \"Bob\"\n                        ]\n                    },\n                ],\n                \"additionalItems\": {\n                    \"type\": \"number\"\n                },\n            }\n        }\n    }\n\n    ui_schema = {\n        \"schema_path\": {\n            \"ui:widget\": \"filepath\"\n        },\n        \"sky_colour\": {\n            \"ui:widget\": \"colour\"\n        }\n\n    }\n    form = builder.create_form(schema, ui_schema)\n    form.widget.state = {\n        \"schema_path\": \"some_file.py\",\n        \"integerRangeSteps\": 60,\n        \"sky_colour\": \"#8f5902\",\n        \"names\": [\n            \"Jack\",\n            \"Bob\"\n        ]\n    }\n    form.show()\n    form.widget.on_changed.connect(lambda d: print(dumps(d, indent=4)))\n\n    app.exec_()\n\n\n```\n\n## Notes\n\nThis package uses [QtPy](https://github.com/spyder-ide/qtpy) as an abstraction layer for PyQt5/PySide2/PyQt6/PySide6. One of those libraries must also be installed in order to function.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagoose77%2Fqt-jsonschema-form","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fagoose77%2Fqt-jsonschema-form","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fagoose77%2Fqt-jsonschema-form/lists"}