如何在kivy中创建自定义列表视图项?

时间:2014-03-07 08:20:57

标签: python listview kivy

我正在尝试使用kivy在python 3.3中为listview创建自定义列表视图项。

列表项目应包含一个标签和3个按钮。

我创建了一个listview,其中适配器cls设置为自定义项类,如下所示:

        ListView:
            id: cue_list
            adapter: ListAdapter(data=[], cls=ListItemButton)
            item_strings: []
然后我按照这样设置类规则:

<ListItemButton>:
    size_hint_y: root.size_hint_y
    height: root.height
    orientation:"horizontal"
    Button:
        size_hint: 0.2, 1.0
        text: "delete"

然后在我的python文件中,我创建了一个函数来添加一些项目:

    def addcue(self):
        self.lv.adapter.data.extend(["new item"])
        self.lv._trigger_reset_populate()

但奇怪的是,结果如下: http://i.stack.imgur.com/dNmz1.png

如何使用.kv文件语言在kivy中从头开始指定listview项目?

1 个答案:

答案 0 :(得分:1)

您的小部件具有ListItemButton的属性和样式,因为......好吧,这就是继承的工作原理。如果您不想这样做,请创建自己的列表项窗口小部件子类http://kivy.org/docs/api-kivy.uix.listview.html#kivy.uix.listview.SelectableView。例如,ListItemButton是SelectableViewButton的子类。

此外,所有删除按钮都重叠,因为ListItemButton不是布局,因此您提供的size_hint信息不会执行任何操作,因此所有按钮的默认位置为0,0,默认大小为100,100。如果您想要布局行为,请将列表项类设为布局,例如BoxLayoutSelectableView的子类。