67 lines
2.1 KiB
Markdown
67 lines
2.1 KiB
Markdown
# 构件数据格式说明
|
||
一个构件数据格式必须是一个符合python的字典数据类型,需要至少包含以下属性
|
||
|
||
## id
|
||
定义一个构件的名称,含有此属性的构件为命名构件,命名构件可以通过Blocks.getWidgetById获得。
|
||
名称规则:名称由字母数字构成,理论上可以包含汉字,绝对不能包含”."(英文句号)
|
||
|
||
## widgettype
|
||
定义构件的名称,大部分常用的kivy的widget的类名都可以用,以及kivyblocks扩展的部件
|
||
|
||
## options
|
||
类构建时的参数,字典数据类型
|
||
|
||
## subwidgets
|
||
子构件数组,数组中的每个元素也必须是一个符合构件数据格式要求的数据字典,用于定义一个子构件。
|
||
|
||
## binds
|
||
构件的事件绑定列表,每个构件(和其命名子构件)的任和事件都可以绑定一道多个处理,详细事件绑定请看[事件绑定](./binds.md)
|
||
|
||
## 其他属性
|
||
非上述属性的其他的字典属性,blocks会试图用此属性值来创建构件,如果成功,则将此构件在当前构件中保存为此属性名称,并可用使用属性名称当变量来调用 Blocks.getWidgetById()函数来获取
|
||
|
||
## 例子
|
||
|
||
### 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的一个特殊的构件类型
|