PythonCard 中编辑的ui保存后是一个后缀为.rsrc.py的文件,其内容 是一个dict,描述了ui 的各个部分
譬如:
{'application':{'type':'Application',
'name':'Template',
'backgrounds': [
{'type':'Background',
'name':'bgTemplate',
'title':'Standard Template with no menus',
'size':(400, 300),
'components': [
{'type':'Button',
'name':'Button1',
'position':(51, 13),
'label':'Button1',
},
] # end components
} # end background
] # end backgrounds
} }
在其代码中,能看到类似的用法,aResource.application.backgrounds,觉得很有意思,原来它将资源文件
中的key 转化为aResource的属性了,自然就可以用.了:)
其代码如下:
class Resource :
_spec = None
"""
A generic tree of dictionary, array and primitive objects
that is accessible using dot(.) notation.
"""
def __init__ ( self, aDictionary ) :
for key in aDictionary:
value = aDictionary[key]
if isinstance(value, dict):
aDictionary[key] = Resource(value)
if isinstance(value, list):
i = 0
for item in value:
if isinstance(item, dict) :
value[i] = Resource(item)
i = i + 1
self.__dict__.update(aDictionary)
这里边,主要就是这句了self.__dict__.update(aDictionary) :)