bugfix
This commit is contained in:
parent
26d28a2562
commit
be4b4641b8
11
README.md
11
README.md
@ -21,7 +21,6 @@ The Customized json data has it own format to descript the UI and it's interacti
|
||||
pip install git+https://github.com/yumoqing/kivy-blocks
|
||||
```
|
||||
Use above command to install the newest version of kivyblocks
|
||||
the widget specification file
|
||||
## How to use
|
||||
see the simple example below:
|
||||
```
|
||||
@ -76,3 +75,13 @@ if __name__ == '__main__':
|
||||
if you running it on window, it will show the following:
|
||||
![hello](./docs/imgs/hello_window.png)
|
||||
|
||||
## Documents
|
||||
[中文文档](./docs/cn/index.md)
|
||||
[English](./docs/en/index.md)
|
||||
|
||||
## references
|
||||
|
||||
Build app for android please see [Buildozer](https://github.com/kivy/buildozer)
|
||||
kivy introduct and API please see [kivy](https://kivy.org)
|
||||
|
||||
|
||||
|
BIN
docs/cn/.binds.md.swp
Normal file
BIN
docs/cn/.binds.md.swp
Normal file
Binary file not shown.
168
docs/cn/binds.md
Normal file
168
docs/cn/binds.md
Normal file
@ -0,0 +1,168 @@
|
||||
# 事件绑定
|
||||
在构件数据格式文件中可以用”binds“属性来为构件定义一到多个事件绑定。
|
||||
|
||||
事件绑定是一个数组结构的数据,每个事件绑定为当前构件(及其下属命名子构件)的任何一个事件定义处理实体
|
||||
|
||||
一个处理实体可以是
|
||||
1. 一个构件的方法
|
||||
2. 一个”urlwidget“类型的构件
|
||||
3. 一个描述一个构件的构件数据
|
||||
4. 一个注册函数
|
||||
5. 一个python脚本
|
||||
6. 某个构件的事件
|
||||
7. 一个组合处理(可以是上述处理实体的组合数组)
|
||||
|
||||
## 名称约定
|
||||
|
||||
* self 当前构件
|
||||
|
||||
* root App.root构件
|
||||
|
||||
* “-”(减号)开始的名称,从当前位置查找命名的祖先构件,如果到app.root还没有找到,则返回空
|
||||
|
||||
* app App.get_running_app
|
||||
|
||||
## 事件绑定数据格式说明
|
||||
|
||||
### wid
|
||||
事件发生所在构件,如果wid所代表的构件不存在指定的事件,此事件绑定将作废,
|
||||
必选项,self为当前构件
|
||||
|
||||
### event
|
||||
事件名称,wid和event组合就可以唯一确定一个事件
|
||||
|
||||
### actiontype
|
||||
行动类型,分别是“blocks”、”urlwidget“、“registerfunction”,“script”、“method“、”event“和”multiple“之一。
|
||||
|
||||
* ”blocks“:值必须是一个符合构件数据格式要求的字典数据,用来创建一个构件。
|
||||
|
||||
* ”urlwidget“;值必须是一个url,从服务器下载一个构件数据格式的文件来创建构件
|
||||
|
||||
* ”Registerfunction“:注册函数,注册函数必须是def f(*args, **kwargs)参数格式,args[0] 为wid所代表的构件对象,如果事件带数据,则从args[1]开始。
|
||||
|
||||
* ”script“:python 脚本。在脚本中有两个内定变量可用: self为“target”指定的构件,args=[事件对象,s事件数据]
|
||||
|
||||
* ”method“:构件的方法,构件由此事件绑定的”target“属性指定,此方法必须具有*args, **kwargs格式的参数定义方式
|
||||
|
||||
* ”event“:构件的事件,构件由此事件绑定的”target“属性指定,事件绑定的参数将传递给此事件
|
||||
|
||||
* “multiple”:组合绑定,参看例子
|
||||
|
||||
### datatarget
|
||||
指定数据获取的构件,此构件需有“getValue”方法,用来获取数据,数据需是字典类型
|
||||
|
||||
### target
|
||||
指定处理事件的构件,对于actiontype in ["blocks", "urlwidget"]的事件绑定, target为其父构件,缺省的插入方式为替代,即用事件构造的构件,替换所有target构件中的其他子构件,成为target构件的唯一子构件,可以在事件绑定定义了不等于”replace“的“mode“属性,使得新创建的构件添加在其他构件的后面。
|
||||
|
||||
### mode
|
||||
可选属性,只有在actiontype in ["blocks", "urlwidget"]情况下有效,指定事件创建的构件在target构件中的插入方式,mode==”replace“时,清空target的所有子构件后插入,否则添加到最后。
|
||||
|
||||
### params
|
||||
事件处理指定的静态参数,其值在构件创建时确定,不会改变,实际传递给事件处理的参数为params.update(d), 其中d为datatarget构件的getValue方法返回的结果。如果未定义datatarget,则d={},
|
||||
|
||||
### options
|
||||
可选项,只有在actiontype in ["blocks", "urlwidget"]情况下有效,指定创建构件的构件数据格式options的值需是一个数据字典,且需满足构件数据格式要求。参看[构件数据格式](./cdf.md)
|
||||
|
||||
### conform
|
||||
可选项,如果存在,此事件处理前需要客户点击弹出窗体中的确认键,否则将不会处理
|
||||
conform的数据格式如下:
|
||||
```
|
||||
"conform":{
|
||||
"size_hint":[0.6,0.6],
|
||||
"title":"Conform for delete playlist",
|
||||
"message":"Please conform to delete this play list"
|
||||
}
|
||||
|
||||
```
|
||||
其中
|
||||
* size_hint定义弹出窗体占屏幕宽,高的占比
|
||||
|
||||
* title是团出窗体的标题
|
||||
|
||||
* message是显示的内容
|
||||
|
||||
### rfname
|
||||
当actiontype==‘registedfunction’时有效,指定注册函数,在前端应用中需先注册, 使用以下代码注册一个registedfunction
|
||||
```
|
||||
from appPublic.registerfunction import RegisterFunction
|
||||
|
||||
def HelloRF(*args, **kwargs):
|
||||
print('Hello ...')
|
||||
|
||||
rf = RegisterFunciton()
|
||||
rf.register('testrf', HelloRF)
|
||||
```
|
||||
'testrf'即可用于rfname
|
||||
|
||||
### script
|
||||
当actiontype=='script'时有效,其值是一行可执行的python代码
|
||||
|
||||
### dispatch_event
|
||||
当actiontype=='event'时有效,指定需要触发target构件上的事件名称
|
||||
|
||||
|
||||
## 例子
|
||||
|
||||
### urlwidget
|
||||
```
|
||||
{
|
||||
"actiontype":"urlwidget",
|
||||
"wid":"delete",
|
||||
"datawidget":"delete",
|
||||
"target":"root.public_popup",
|
||||
"event":"on_press",
|
||||
"conform":{
|
||||
"size_hint":[0.6,0.6],
|
||||
"title":"Conform for delete playlist",
|
||||
"message":"Please conform to delete this play list"
|
||||
},
|
||||
"options":{
|
||||
"method":"GET",
|
||||
"mode":"replace",
|
||||
"params":{{json.dumps(params_kw)}},
|
||||
"url":"{{entire_url('delete_pldetail_song.dspy')}}"
|
||||
}
|
||||
},
|
||||
```
|
||||
命名构件”delete“按钮的”on_press"事件被绑定到了一个“urlwidget”事件处理上,数据来源为“delete”构件, 目标窗体为app.root构件下面的一个”public_popup"的构件。此事件的处理需要用户在弹出窗体中点击确认键后才能处理。
|
||||
|
||||
### method
|
||||
```
|
||||
{
|
||||
"event":"on_press",
|
||||
"actiontype":"method",
|
||||
"wid":"delete",
|
||||
"target":"root.public_popup",
|
||||
"method":"open"
|
||||
}
|
||||
```
|
||||
命名构件“delete”的“on_press"事件调用app.root的public_popup构件的open函数来处理。
|
||||
|
||||
### registedfunction
|
||||
```
|
||||
{
|
||||
"actiontype":"registedfunction",
|
||||
"wid":"playlist_add",
|
||||
"event":"on_submit",
|
||||
"datawidget":"playlist_add",
|
||||
"target":"self",
|
||||
"rfname":"playlist_add"
|
||||
}
|
||||
```
|
||||
"playlist_add"构件的"on_submit"事件绑定在一个registedfunction的处理函数上
|
||||
事件的数据来源与“playlist_add"构件。
|
||||
|
||||
### script
|
||||
```
|
||||
{
|
||||
"actiontype":"script",
|
||||
"wid":"playlist_add",
|
||||
"event":"on_submit",
|
||||
"datawidget":"playlist_add",
|
||||
"target":"self",
|
||||
"script":"print(self, args)"
|
||||
}
|
||||
```
|
||||
"playlist_add"构件的"on_submit"事件绑定了一个script的处理,即打印出target和参数
|
||||
|
||||
|
23
docs/cn/cdf.md
Normal file
23
docs/cn/cdf.md
Normal file
@ -0,0 +1,23 @@
|
||||
# 构件数据格式说明
|
||||
一个构件数据格式必须是一个符合python的字典数据类型,需要至少包含以下属性
|
||||
|
||||
## id
|
||||
定义一个构件的名称,含有此属性的构件为命名构件,命名构件可以通过Blocks.getWidgetById获得。
|
||||
名称规则:名称由字母数字构成,理论上可以包含汉字,绝对不能包含”."(英文句号)
|
||||
|
||||
## widgettype
|
||||
定义构件的名称,大部分常用的kivy的widget的类名都可以用,以及kivyblocks扩展的部件
|
||||
|
||||
## options
|
||||
类构建时的参数,字典数据类型
|
||||
|
||||
## subwidgets
|
||||
子构件数组,数组中的每个元素也必须是一个符合构件数据格式要求的数据字典,用于定义一个子构件。
|
||||
|
||||
## binds
|
||||
构件的事件绑定列表,每个构件(和其命名子构件)的任和事件都可以绑定一道多个处理,详细事件绑定请看[事件绑定](./binds.md)
|
||||
|
||||
## 其他属性
|
||||
非上述属性的其他的字典属性,blocks会试图用此属性值来创建构件,如果成功,则将此构件在当前构件中保存为此属性名称,并可用使用属性名称当变量来调用 Blocks.getWidgetById()函数来获取
|
||||
|
||||
|
9
docs/cn/index.md
Normal file
9
docs/cn/index.md
Normal file
@ -0,0 +1,9 @@
|
||||
# kivyblocks中文文档
|
||||
|
||||
## 目录
|
||||
[kivyblocks简介](./intro.md)
|
||||
|
||||
[构件数据格式说明](./cdf.md)
|
||||
|
||||
[常用构件](./components.md)
|
||||
|
2
docs/cn/intro.md
Normal file
2
docs/cn/intro.md
Normal file
@ -0,0 +1,2 @@
|
||||
# kivyblocks简介
|
||||
|
Loading…
Reference in New Issue
Block a user