我被困在基维的某一点。据我所知,Kivy类似于UI风格的UI(适配器,kv语言)。我遵循同样的逻辑。
我有列入FeedAdapter的项目列表。现在我需要一个像Android(onItemClick)这样的方法,它将给出所选项目的位置。我没有找到任何地方,我阅读所有文档,但没有任何关于此的线索。是的,我可以通过for循环手动找到一些项目,但这对我来说是不需要的。
有人有答案吗?
关于
答案 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)