kivyblocks/docs/cn/cdf.md

67 lines
2.1 KiB
Markdown
Raw Normal View History

2021-03-17 12:01:37 +08:00
# 构件数据格式说明
一个构件数据格式必须是一个符合python的字典数据类型需要至少包含以下属性
## id
定义一个构件的名称含有此属性的构件为命名构件命名构件可以通过Blocks.getWidgetById获得。
名称规则:名称由字母数字构成,理论上可以包含汉字,绝对不能包含”."(英文句号)
## widgettype
定义构件的名称大部分常用的kivy的widget的类名都可以用以及kivyblocks扩展的部件
## options
类构建时的参数,字典数据类型
## subwidgets
子构件数组,数组中的每个元素也必须是一个符合构件数据格式要求的数据字典,用于定义一个子构件。
## binds
构件的事件绑定列表,每个构件(和其命名子构件)的任和事件都可以绑定一道多个处理,详细事件绑定请看[事件绑定](./binds.md)
## 其他属性
非上述属性的其他的字典属性blocks会试图用此属性值来创建构件如果成功则将此构件在当前构件中保存为此属性名称并可用使用属性名称当变量来调用 Blocks.getWidgetById()函数来获取
2021-03-17 16:04:17 +08:00
## 例子
2021-03-17 12:01:37 +08:00
2021-03-17 16:04:17 +08:00
### HELLO
```
{
"widgettype":"VBox",
"options":{},
"subwidgets":[
{
"widgettype":"Title1",
"options":{
"text":"Say Hello",
"i18n":True,
"size_hint_y":None,
"height":"py::CSize(2)"
}
},
{
"widgettype":"Text",
"options":{
"text":"Hello KivyBlocks"
}
}
]
}
```
##### 说明
创建一个VBox类型的构件VBox创建一个子构件垂直排列的容器子构件按照顺序从上而下排列在这个例子中本VBox容器中放了两个子构件一个是“title1”的标题1构件另一个是Text构件VBox不带参数是表示占满父构件的全部空间。
##### 显示效果
[Hello](../imgs/hello_window.png)
### 服务器来的构件字典数据
```
{
"widgettype":"urlwidget",
"options":{
"params":{},
"url":"{{entire_url('ctrl.ui')}}"
}
}
```
#### 说明
urlwidget的一个特殊的构件类型