Как я могу создать собственный элемент списка в kivy?

Я пытаюсь создать собственный элемент списка для списка в python 3.3, используя kivy.

Элемент списка должен состоять из метки и 3 кнопок.

Я создал список с адаптером 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

Как я могу указать элемент списка с нуля в kivy, используя язык файлов .kv?


person Audio    schedule 07.03.2014    source источник


Ответы (1)


Ваши виджеты имеют свойства и стиль ListItemButton, потому что... так работает наследование. Если вы этого не хотите, создайте свой собственный виджет элемента списка, подкласс http://kivy.org/docs/api-kivy.uix.listview.html#kivy.uix.listview.SelectableView. Например, ListItemButton является подклассом SelectableView и Button.

Кроме того, все ваши кнопки удаления перекрываются, потому что ListItemButton не является макетом и поэтому ничего не делает с предоставленной вами информацией size_hint, поэтому все кнопки имеют pos по умолчанию 0,0 и размер по умолчанию 100 100. Если вам нужно поведение макета, сделайте свой класс элемента списка макетом, например. подкласс BoxLayout и SelectableView.

person inclement    schedule 08.03.2014