如何定义非lambda args_converter函数?

时间:2017-04-07 16:57:55

标签: kivy

docs中显示args_converter可以写为常规函数或lambda函数,但我似乎无法将其与非lambda函数一起使用,我看到的所有例子都是lambdas。

这是我的一段代码:

def groupArgsConv(index, item):
    res = {'text': item['title'],
               'size_hint_y': None,
               'heigth': '25dp'}
    return res

self.ids.grouplist.adapter = ListAdapter(args_converter=groupArgsConv,
                                             data=self.groups,
                                             cls=ListItemLabel)

这不起作用,但确实如此:

list_item_args_converter = lambda index, item: {'text': item['title'],
                                             'size_hint_y': None,
                                             'height': '25dp'}

self.ids.grouplist.adapter = ListAdapter(args_converter=list_item_args_converter,
                                             data=self.groups,
                                             cls=ListItemLabel)

为什么呢?我如何让第一个例子起作用?

1 个答案:

答案 0 :(得分:1)

此代码适用于我:

from kivy.adapters.listadapter import ListAdapter
from kivy.uix.listview import ListItemLabel, ListView
from kivy.base import runTouchApp

data = [{'title': str(i)} for i in range(100)]

def groupArgsConv(index, item):
    res = {'text': item['title'],
           'size_hint_y': None,
           'height': '25dp'}
    return res

list_adapter = ListAdapter(
    data=data,
    args_converter=groupArgsConv,
    cls=ListItemLabel)

if __name__ == '__main__':
    runTouchApp(ListView(adapter=list_adapter))

你是什么意思"没有工作"?你在日志中有某种异常或奇怪的输出吗?