如何在Kivy中创建自定义列表项?

0 投票
1 回答
4525 浏览
提问于 2025-04-17 21:15

我正在尝试用Kivy在Python 3.3中创建一个自定义的列表视图项。

这个列表项应该包含一个标签和三个按钮。

我创建了一个列表视图,并把适配器的类设置为一个自定义项类,代码如下:

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

但是奇怪的是,结果是这样的:

https://i.stack.imgur.com/dNmz1.png

我该如何从头开始在Kivy中指定一个列表视图项,使用.kv文件语言呢?

1 个回答

1

你的控件之所以有ListItemButton的属性和样式,是因为……这就是继承的工作原理。如果你不想这样,可以创建一个自己的列表项控件,继承自 http://kivy.org/docs/api-kivy.uix.listview.html#kivy.uix.listview.SelectableView。比如,ListItemButton就是从 SelectableViewButton 这两个类继承来的。

另外,你的删除按钮重叠是因为ListItemButton不是一个布局,所以它不会处理你提供的大小提示信息。因此,所有按钮的位置都是默认的0,0,大小也是默认的100,100。如果你想要布局效果,可以把你的列表项类做成一个布局,比如继承自 BoxLayoutSelectableView

撰写回答