Kivy:链接到动态生成的屏幕的动态页面

时间:2015-02-11 03:09:32

标签: python kivy

我知道可以在屏幕中动态生成小部件列表,如下所示:

<ListViewModal>:
    ListView:
        size_hint: .8, .8
        adapter:
            sla.ListAdapter(
            data=["Item #{0}".format(i) for i in range(100)],
            cls=ListItemButton.ListItemButton)

但是,是否可以让每个人都有动态链接(或绑定等)?

我试图在Craigslist上设置一个界面,用户从滚动列表中选择状态,打开该状态城市的屏幕。而不是为每个州制作50个按钮,然后再为每个城市列表增加50个屏幕,我认为从状态列表和状态字典中动态生成这些按钮会更聪明:城市。

我知道我可以在任何给定的Web框架中执行此操作,但在kivy中它是否可行/可能?

编辑:

我试图按照建议实现args_converter,但每当我尝试实现它时如下:

class StatesScreen(Screen):
    data = [{'text': str(i), 'is_selected': False} for i in range(100)]

    args_converter = lambda row_index, rec: {'text': rec['text'],
                                             'size_hint_y': None,
                                             'height': 25}

    list_adapter = ListAdapter(data=data,
                               args_converter=args_converter,
                               cls= ListItemButton,
                               selection_mode='single',
                               allow_empty_selection=False)
什么也没出现。如果我尝试用kv语言实现它,

<StatesScreen>
    ListView:
      adapter:
        list_adapter

我没有定义list_adapter

1 个答案:

答案 0 :(得分:1)

您可以使用args_converter函数将数据格式转换为您喜欢的小部件。记录在案here