Kivy:Listview-所选项目的位置

Kivy:Listview-所选项目的位置,listview,kivy,Listview,Kivy,我在Kivy被困在一个地方。据我所知,Kivy类似于Android风格的UI(适配器,kv语言)。我也遵循同样的逻辑 我有一个项目列表,这些项目被馈送到ListAdapter。现在我需要一个类似Android(onItemClick)的方法,它将给出所选项目的位置。我什么地方都没找到,我看了所有的文件,但没有任何线索。是的,我可以通过for循环手动查找某些项目,但这对我来说是不需要的 有人对此有答案吗 关于您可以使用ListAdapter并使用自定义按钮小部件为其提供信息。自定义小部件可以有一个

我在Kivy被困在一个地方。据我所知,Kivy类似于Android风格的UI(适配器,kv语言)。我也遵循同样的逻辑

我有一个项目列表,这些项目被馈送到ListAdapter。现在我需要一个类似Android(onItemClick)的方法,它将给出所选项目的位置。我什么地方都没找到,我看了所有的文件,但没有任何线索。是的,我可以通过for循环手动查找某些项目,但这对我来说是不需要的

有人对此有答案吗


关于

您可以使用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()
按钮列表测试.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) 
#:导入主
#:导入ListAdapter kivy.adapters.ListAdapter.ListAdapter
:
按钮列表对象:按钮列表
方向:“垂直”
列表视图:
id:按钮列表
适配器:
ListAdapter(数据=[],cls=main.MyButton)
按:根。打印位置(自身)