Python Kivy ListView:如何删除选定的ListItemButton?
我试图通过构建一个简单的待办事项列表应用程序来学习kivy,就像《在kivy中创建应用程序》一书的作者Dusty Phillips所建议的那样 这是迄今为止的代码:Python Kivy ListView:如何删除选定的ListItemButton?,python,listview,kivy,Python,Listview,Kivy,我试图通过构建一个简单的待办事项列表应用程序来学习kivy,就像《在kivy中创建应用程序》一书的作者Dusty Phillips所建议的那样 这是迄今为止的代码: from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.properties import ObjectProperty from kivy.uix.listview import ListItemButton class TaskB
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
from kivy.uix.listview import ListItemButton
class TaskButton(ListItemButton):
pass
class TodoRoot(BoxLayout):
task_input = ObjectProperty()
task_list = ObjectProperty()
def add_task(self):
self.task_list.adapter.data.extend([self.task_input.text])
self.task_list._trigger_reset_populate()
def del_task(self):
pass
class TodoApp(App):
def build(self):
return TodoRoot()
if __name__ == '__main__':
TodoApp().run()
这是kv文件:
#: import main todo
#: import ListAdapter kivy.adapters.listadapter.ListAdapter
#: import ListItemButton kivy.uix.listview.ListItemButton
TodoRoot:
<TodoRoot>:
orientation: "vertical"
task_input: task_input_view
task_list: tasks_list_view
BoxLayout:
size_hint_y: None
height: "40dp"
TextInput:
id: task_input_view
size_hint_x: 70
Button:
text: "Add"
size_hint_x: 15
on_press: root.add_task()
Button:
text: "Del"
size_hint_x: 15
on_press: root.del_task()
ListView:
id: tasks_list_view
adapter:
ListAdapter(data=[], cls=main.TaskButton)
这就是它看起来的样子:
我知道ListView API仍然有些实验性,我抱怨使用适配器/转换器的例子,谷歌搜索也没有帮助。那么,需要什么代码才能使Del按钮工作并删除选定的ListItemButton呢 在阅读了大量ListView API文档和示例之后,我终于发现了自己。我们需要的是listadapter类的selection属性,然后我们可以简单地调用adapter.data-ListProperty的继承remove方法 因此,对于任何感兴趣的人来说,以下是代码:
def del_task(self, *args):
if self.task_list.adapter.selection:
selection = self.task_list.adapter.selection[0].text
self.task_list.adapter.data.remove(selection)
self.task_list._trigger_reset_populate()