我正在尝试使用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项目?
答案 0 :(得分:1)
您的小部件具有ListItemButton的属性和样式,因为......好吧,这就是继承的工作原理。如果您不想这样做,请创建自己的列表项窗口小部件子类http://kivy.org/docs/api-kivy.uix.listview.html#kivy.uix.listview.SelectableView
。例如,ListItemButton是SelectableView
和Button
的子类。
此外,所有删除按钮都重叠,因为ListItemButton不是布局,因此您提供的size_hint信息不会执行任何操作,因此所有按钮的默认位置为0,0,默认大小为100,100。如果您想要布局行为,请将列表项类设为布局,例如BoxLayout
和SelectableView
的子类。