# DDQ UI Framework
一个灵活的 UI 框架,支持多种后端实现。目前提供了基于 Tkinter 的实现。
## 特性
- 提供了一套统一的 UI 组件接口
- 支持多种后端实现(目前支持 Tkinter)
- 包含丰富的基础组件:按钮、文本框、下拉框等
- 提供配置管理功能,支持配置的保存和加载
- 支持组件的联动和状态管理
## 安装
```bash
pip install ddq_ui
```
## 快速开始
```python
import tkinter as tk
from ddq_ui.ddq_tkinter.ddq_widgets import Form, ButtonGroup
# 创建窗口
root = tk.Tk()
root.title("DDQ UI Demo")
# 创建表单
form = Form(root)
form.input("name", "姓名:", required=True)
form.select("gender", "性别:", options=["男", "女"])
form.pack()
# 创建按钮组
buttons = ButtonGroup(root)
buttons.add_new("提交", lambda: print(form.get_values()))
buttons.pack()
root.mainloop()
```
## 组件
### Form(表单)
- 支持多种输入控件:文本框、下拉框、单选框等
- 支持表单验证
- 支持表单联动
### ButtonGroup(按钮组)
- 统一的按钮样式
- 支持按钮的启用/禁用状态
- 支持按钮的布局配置
### ConfigurableTool(可配置工具)
- 支持配置的保存和加载
- 提供配置管理面板
- 支持配置的导入导出
## 示例
查看 `examples` 目录获取更多示例:
- `demo_form.py`: 表单组件示例
- `demo_button_group.py`: 按钮组示例
- `demo_config_manager.py`: 配置管理示例
## 许可证
MIT License
Raw data
{
"_id": null,
"home_page": "https://github.com/ddq/ddq_ui",
"name": "ddq-ui",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "ui, tkinter, framework, widgets",
"author": "DDQ",
"author_email": "ddq@example.com",
"download_url": "https://files.pythonhosted.org/packages/5b/02/08593a843ccac079ad9a7179d929eb053fee5c309489efe2eda86a02be18/ddq_ui-0.1.5.tar.gz",
"platform": null,
"description": "# DDQ UI Framework\r\n\r\n\u4e00\u4e2a\u7075\u6d3b\u7684 UI \u6846\u67b6\uff0c\u652f\u6301\u591a\u79cd\u540e\u7aef\u5b9e\u73b0\u3002\u76ee\u524d\u63d0\u4f9b\u4e86\u57fa\u4e8e Tkinter \u7684\u5b9e\u73b0\u3002\r\n\r\n## \u7279\u6027\r\n\r\n- \u63d0\u4f9b\u4e86\u4e00\u5957\u7edf\u4e00\u7684 UI \u7ec4\u4ef6\u63a5\u53e3\r\n- \u652f\u6301\u591a\u79cd\u540e\u7aef\u5b9e\u73b0\uff08\u76ee\u524d\u652f\u6301 Tkinter\uff09\r\n- \u5305\u542b\u4e30\u5bcc\u7684\u57fa\u7840\u7ec4\u4ef6\uff1a\u6309\u94ae\u3001\u6587\u672c\u6846\u3001\u4e0b\u62c9\u6846\u7b49\r\n- \u63d0\u4f9b\u914d\u7f6e\u7ba1\u7406\u529f\u80fd\uff0c\u652f\u6301\u914d\u7f6e\u7684\u4fdd\u5b58\u548c\u52a0\u8f7d\r\n- \u652f\u6301\u7ec4\u4ef6\u7684\u8054\u52a8\u548c\u72b6\u6001\u7ba1\u7406\r\n\r\n## \u5b89\u88c5\r\n\r\n```bash\r\npip install ddq_ui\r\n```\r\n\r\n## \u5feb\u901f\u5f00\u59cb\r\n\r\n```python\r\nimport tkinter as tk\r\nfrom ddq_ui.ddq_tkinter.ddq_widgets import Form, ButtonGroup\r\n\r\n# \u521b\u5efa\u7a97\u53e3\r\nroot = tk.Tk()\r\nroot.title(\"DDQ UI Demo\")\r\n\r\n# \u521b\u5efa\u8868\u5355\r\nform = Form(root)\r\nform.input(\"name\", \"\u59d3\u540d:\", required=True)\r\nform.select(\"gender\", \"\u6027\u522b:\", options=[\"\u7537\", \"\u5973\"])\r\nform.pack()\r\n\r\n# \u521b\u5efa\u6309\u94ae\u7ec4\r\nbuttons = ButtonGroup(root)\r\nbuttons.add_new(\"\u63d0\u4ea4\", lambda: print(form.get_values()))\r\nbuttons.pack()\r\n\r\nroot.mainloop()\r\n```\r\n\r\n## \u7ec4\u4ef6\r\n\r\n### Form\uff08\u8868\u5355\uff09\r\n- \u652f\u6301\u591a\u79cd\u8f93\u5165\u63a7\u4ef6\uff1a\u6587\u672c\u6846\u3001\u4e0b\u62c9\u6846\u3001\u5355\u9009\u6846\u7b49\r\n- \u652f\u6301\u8868\u5355\u9a8c\u8bc1\r\n- \u652f\u6301\u8868\u5355\u8054\u52a8\r\n\r\n### ButtonGroup\uff08\u6309\u94ae\u7ec4\uff09\r\n- \u7edf\u4e00\u7684\u6309\u94ae\u6837\u5f0f\r\n- \u652f\u6301\u6309\u94ae\u7684\u542f\u7528/\u7981\u7528\u72b6\u6001\r\n- \u652f\u6301\u6309\u94ae\u7684\u5e03\u5c40\u914d\u7f6e\r\n\r\n### ConfigurableTool\uff08\u53ef\u914d\u7f6e\u5de5\u5177\uff09\r\n- \u652f\u6301\u914d\u7f6e\u7684\u4fdd\u5b58\u548c\u52a0\u8f7d\r\n- \u63d0\u4f9b\u914d\u7f6e\u7ba1\u7406\u9762\u677f\r\n- \u652f\u6301\u914d\u7f6e\u7684\u5bfc\u5165\u5bfc\u51fa\r\n\r\n## \u793a\u4f8b\r\n\r\n\u67e5\u770b `examples` \u76ee\u5f55\u83b7\u53d6\u66f4\u591a\u793a\u4f8b\uff1a\r\n- `demo_form.py`: \u8868\u5355\u7ec4\u4ef6\u793a\u4f8b\r\n- `demo_button_group.py`: \u6309\u94ae\u7ec4\u793a\u4f8b\r\n- `demo_config_manager.py`: \u914d\u7f6e\u7ba1\u7406\u793a\u4f8b\r\n\r\n## \u8bb8\u53ef\u8bc1\r\n\r\nMIT License \r\n",
"bugtrack_url": null,
"license": null,
"summary": "DDQ UI Framework - \u4e00\u4e2a\u7075\u6d3b\u7684 UI \u6846\u67b6\uff0c\u652f\u6301\u591a\u79cd\u540e\u7aef\u5b9e\u73b0",
"version": "0.1.5",
"project_urls": {
"Documentation": "https://github.com/ddq/ddq_ui#readme",
"Homepage": "https://github.com/ddq/ddq_ui",
"Source": "https://github.com/ddq/ddq_ui",
"Tracker": "https://github.com/ddq/ddq_ui/issues"
},
"split_keywords": [
"ui",
" tkinter",
" framework",
" widgets"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2c4315570b48659e4013d977dc0ed76d1c91d60ac531f33c07263fd829f6d186",
"md5": "e9857e01993dd342e4d531f35458a9a4",
"sha256": "274149d4094346405d9808b8ff0614e68251af345c03704148fcc3e06403fc7f"
},
"downloads": -1,
"filename": "ddq_ui-0.1.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e9857e01993dd342e4d531f35458a9a4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 74572,
"upload_time": "2025-02-11T17:45:30",
"upload_time_iso_8601": "2025-02-11T17:45:30.340167Z",
"url": "https://files.pythonhosted.org/packages/2c/43/15570b48659e4013d977dc0ed76d1c91d60ac531f33c07263fd829f6d186/ddq_ui-0.1.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5b0208593a843ccac079ad9a7179d929eb053fee5c309489efe2eda86a02be18",
"md5": "c8d3627f56c07a73b16090be747cb24e",
"sha256": "05c6e102bac505b94e8cdd84a168c1fff1f6ebc2c6199fb766357acfb60e41ac"
},
"downloads": -1,
"filename": "ddq_ui-0.1.5.tar.gz",
"has_sig": false,
"md5_digest": "c8d3627f56c07a73b16090be747cb24e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 47255,
"upload_time": "2025-02-11T17:45:33",
"upload_time_iso_8601": "2025-02-11T17:45:33.318208Z",
"url": "https://files.pythonhosted.org/packages/5b/02/08593a843ccac079ad9a7179d929eb053fee5c309489efe2eda86a02be18/ddq_ui-0.1.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-11 17:45:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ddq",
"github_project": "ddq_ui",
"github_not_found": true,
"lcname": "ddq-ui"
}