2.1 KiB
2.1 KiB
构件数据格式说明
一个构件数据格式必须是一个符合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不带参数是表示占满父构件的全部空间。
显示效果
服务器来的构件字典数据
{
"widgettype":"urlwidget",
"options":{
"params":{},
"url":"{{entire_url('ctrl.ui')}}"
}
}
说明
urlwidget的一个特殊的构件类型