如何在Kivy中创建自定义列表项?
我正在尝试用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就是从 SelectableView
和 Button
这两个类继承来的。
另外,你的删除按钮重叠是因为ListItemButton不是一个布局,所以它不会处理你提供的大小提示信息。因此,所有按钮的位置都是默认的0,0,大小也是默认的100,100。如果你想要布局效果,可以把你的列表项类做成一个布局,比如继承自 BoxLayout
和 SelectableView
。