Kivy:Listview - 所选项目的位置

时间:2015-03-03 15:28:36

标签: listview kivy

我被困在基维的某一点。据我所知,Kivy类似于UI风格的UI(适配器,kv语言)。我遵循同样的逻辑。

我有列入FeedAdapter的项目列表。现在我需要一个像Android(onItemClick)这样的方法,它将给出所选项目的位置。我没有找到任何地方,我阅读所有文档,但没有任何关于此的线索。是的,我可以通过for循环手动找到一些项目,但这对我来说是不需要的。

有人有答案吗?

关于

1 个答案:

答案 0 :(得分:0)

您可以使用ListAdapter并将其与自定义按钮小部件一起提供。自定义窗口小部件可以在其中定义on_press函数,以返回窗口小部件的pos

main.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.listview import ListItemButton
from kivy.properties import ObjectProperty


class MyBoxLayout(BoxLayout):
    button_list_obj = ObjectProperty()

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        mylist = ['First Button', 'Second Button', 'Third Button', 'Fourth Button', 'Fifth Button']
        self.button_list_obj.item_strings = mylist
        self.button_list_obj.adapter.data.clear()
        self.button_list_obj.adapter.data.extend(mylist)


class MyButton(ListItemButton):
    def print_pos(self, mybutton):
        print(self.pos)


class ButtonListTestApp(App):
    def build(self):
        return MyBoxLayout()

if __name__== "__main__":
    ButtonListTestApp().run()

buttonlisttest.kv

#: import main main
#: import ListAdapter kivy.adapters.listadapter.ListAdapter

<MyBoxLayout>:
    button_list_obj: button_list
    orientation: 'vertical'
    ListView:
        id: button_list
        adapter:
            ListAdapter(data=[], cls=main.MyButton)

<MyButton>
    on_press: root.print_pos(self)