2017-04-07 19 views
0

docs中顯示args_converter可以寫成普通函數或lambda函數,但我似乎無法使它與非lambda函數一起工作,並且我看到的所有示例都是lambda表達式。如何定義一個非lambda args_converter函數?

這裏有一塊我的代碼:

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) 

爲什麼?我如何得到第一個例子工作?

回答

0

此代碼的工作對我來說:

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)) 

你是什麼意思是「不工作」嗎?你在日誌中有一些異常或奇怪的輸出嗎?