Python 如何在kivy中创建自定义listview项?

Python 如何在kivy中创建自定义listview项?,python,listview,kivy,Python,Listview,Kivy,我正在尝试使用kivy为Python3.3中的listview创建一个自定义listview项 列表项应由一个标签和3个按钮组成 我创建了一个listview,将适配器cls设置为自定义项类,如下所示: ListView: id: cue_list adapter: ListAdapter(data=[], cls=ListItemButton) item_strings: [] 然后我像这样设置类规则:

我正在尝试使用kivy为Python3.3中的listview创建一个自定义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"
但奇怪的是,结果是:


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

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

此外,所有删除按钮都重叠,因为ListItemButton不是布局,因此与您提供的大小提示信息无关,因此所有按钮的默认位置为0,0,默认大小为100100。如果需要布局行为,请将列表项设置为a类布局,例如
BoxLayout
SelectableView
的子类

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