Kivy的kivyredux Redux
kivyredux的Python项目详细描述
基维雷多克斯
kivyredux是一个python包,它允许在Kivy上实现Redux类似的实现,它的灵感来自于Kovak's redux implementation
安装
使用pip包管理器安装kivy redux包
pip install kivyredux
要求
kivyredux需要3.x或更高版本的python,即python>;=3.x
组件
- 在
状态
- ^{str1}$State对象允许您创建一个与dictionary类似的简单状态,但它将它们存储为属性
- get从状态(实例方法)获取请求的属性
- update更新状态中的特定属性(实例方法)
- 在
静态方法
- get_key获取状态对象中的公共属性
- update_key更新state对象中的公共属性
- ^{str1}$State对象允许您创建一个与dictionary类似的简单状态,但它将它们存储为属性
- 在
动作
- ^{str1}$Action类允许为要映射的每个分派创建操作
- 动作(动作类型,**数据由动作使用)
- 动作所使用的数据是作为动作实例使用的数据字典创建的-动作数据@财产 ---默认为空字典
- action_type-操作的标识符
- 动作(动作类型,**数据由动作使用)
- ^{str1}$Action类允许为要映射的每个分派创建操作
- 在
减速器
- Reducer类允许您创建一个Reducer对象以传递到存储区以更新状态
- 减速器(减速器内径、减速器cb)
- 减速器_id减速器的唯一标识符 ---默认为随机字符串
- 要与reducer实例关联的reducer_cb回调函数
---默认为
None
- 减速器(减速器内径、减速器cb)
- Reducer类允许您创建一个Reducer对象以传递到存储区以更新状态
- 在
存储
- Store是一个公共的Store类,它允许处理与所有小部件及其属性绑定和映射以进行更新的连接
- 仓库(减速机、州)
- reducer是与回调关联的reducer的集合 --默认为空集合
- state是存储将处理widget中的动作分派的状态,并将widget属性的状态映射为updated state ---默认为空状态对象
- 在
实例方法
- 连接(映射器、调度器、小部件)
- mapper->;更新状态时控件属性的映射函数
---默认为
None
- dispatcher—与小部件的属性绑定,并为任何属性分派操作
变化
---默认为
None
- 函数参数->;dispatch_Function,widget
- 返回函数
- widget—>;要绑定到存储的widget
- mapper->;更新状态时控件属性的映射函数
---默认为
- 添加_-mapping_-binding(小部件、new_-mapper、new_-dispatcher、replace_-mapping、replace-_-binding)
- widget—>;用于插入其他映射和绑定函数的widget
- 新建映射器->新建映射函数
--默认为
None
- new_dispatcher->;新的调度函数,类似于connect函数
--默认为
None
- replace\u mapping—>;用新的映射替换现有的映射函数
---默认为
False
- 替换\u binding->;取消绑定所有最初绑定的属性并绑定新调度的属性
---默认为
False
- 增加减速器(新减速器) *新减速机->;要添加到减速机连接的新减速机 ---必须是Reducer类型
- 连接(映射器、调度器、小部件)
使用
#store.pyfromkivyreduximportState,Store,Action,Reducercommon_state=State(saying_hi=False,saying_bye=True)#Can also user [common_state={}]defsample_reducer(action,state=common_state):ifaction.type=='HI':previous_value=state.get('saying_hi')state.update('saying_hi',notprevious_value)elifaction.type=='BYE':previous_value=state.get('saying_bye')state.update('saying_bye',notprevious_value)else:passreturnstatehi_bye_reducer=Reducer(reducer_cb=sample_reducer)hi_action=Action(action_type='HI')bye_action=Action(action_type='BYE')common_store=Store(reducers=[hi_bye_reducer],state=common_state)#sample widget#hi_bye.kv'''#:kivy 1.1.0<HiClass>: text:'HI' if self.hi else 'Bye'#Functional component cannot be specified with basic props#i.e.,#<ByeFunction>:# color:[1,1,1,1] #doesn't work'''#hi.pyfromkivy.uix.labelimportLabelfromkivy.lang.builderimportBuilderfrom.storeimportcommon_store,hi_action,bye_action#class componentsBuilder.load_file('hi_bye.kv')classHi(Label):''' Class component which inherits Label widget '''__widget__='HiClass'# [IMPORTANT] to map with .kv file's namepassdefmapper(state,widget):#Maps Hiwidget.hi=state.get('saying_hi')defdispatcher(dispatch,widget):#dispatches hi actionreturn{'bind':{'hi':lambda*largs,**kwargs:dispatch(hi_action)},'init':{'hi':False}}HiClass=common_store.connect(mapper,dispatcher,Hi)#class component createddefbye_mapper(state,widget):#Maps byewidget.bye=state.get('saying_bye')defbye_dispatcher(dispatch,widget):#Dispatches bye actionreturn{'bind':{'bye':lambda*largs,**kwargs:dispatch(bye_action)},'init':{'bye':True}}defByeFunction(*largs,**kwargs):''' Functional component which returns a Label widget '''returnLabel(**kwargs)ByeFunction=cs.connect(bye_mapper,bye_dispatcher,ByeFunction)#Functional component created#main.pyfromkivy.appimportAppfromkivy.uix.boxlayoutimportBoxLayoutfrom.hiimportHiClass,ByeFunctionfromkivy.factoryimportFactoryclassHBContainer(BoxLayout):passclassHBApp(App):defbuild(self):Factory.register('ByeFunction',cls=ByeFunction)Factory.register('HiClass',cls=HiClass)returnHBContainer()#hb.kv'''<HBContainer>: HiClass: ByeFunction: text:'Bye' if self.bye else 'Hi''''
许可证
- 项目
标签: