如何解决KivyMD-如何使用MDCheckbox on_active删除包含复选框的父级列表项?
我有一个包含各种ThreeLineAvatarIconListItem小部件的MDList。这些列表项包含一个MDCheckbox作为右侧图标。我要实现的功能-选中复选框时,即“ on_active”,父列表项被完全删除。该列表是一个任务跟踪器,其想法是可以将该任务“选中”,然后不再显示在列表中。
一些(可能不是这样!)相关的代码摘录:
class TasksScreen(Screen) :
def on_enter(self,*args):
for i in TaskStore.keys() :
self.ids.wiki_cardcontainer.add_widget(TaskItems(id='wikitask {}'.format('task_title'),text=str(TaskStore.get(i)['task_title']),secondary_text=str(TaskStore.get(i)['task_detail']),tertiary_text=str(TaskStore.get(i)['task_deadline'])))
def on_leave(self,*args):
self.ids.wiki_cardcontainer.clear_widgets()
def get_date(self,date) :
'''
:type date: <class 'datetime.date'>
'''
self.ids.wiki_dateselected.text = str(date)
def show_date_picker(self) :
date_dialog = MDDatePicker(callback=self.get_date)
date_dialog.open()
def create_task(self):
task_title = self.ids.i_wiki_tasktitle.text
task_detail = self.ids.i_wiki_taskdetail.text
task_deadline = self.ids.wiki_dateselected.text
print('Task title is {},task detail is {},and task deadline is {}'.format(task_title,task_detail,task_deadline))
self.ids.wiki_cardcontainer.add_widget(TaskItems(id = 'wikitask_{}'.format(task_title),text=str(task_title),secondary_text = str(task_detail),tertiary_text = str(task_deadline)))
TaskStore[str(task_title)] = {'task_title': str(task_title),'task_detail': str(task_detail),'task_deadline': str(task_deadline)}
TaskStore = JsonStore("TaskStore.json")
class TaskItems(ThreeLineAvatarIconListItem):
def complete_task(self):
print('widget removed')
#TODO Add in functionality to remove widget when checkbox is ticked.
pass
class Container(IRightBodyTouch,MDBoxLayout):
adaptive_width = True
class RightCheckBox(IRightBodyTouch,MDCheckbox):
pass
.kv
: 名称:“ TasksScreen”
MDBoxLayout:
orientation: 'horizontal'
size_hint_y: 1
size_hint_x: 1
MDBoxLayout:
size_hint: (0.4,1)
orientation: 'vertical'
MDCard:
id: wiki_card_1
orientation: 'vertical'
size_hint: (1,1)
spacing: 5
MDLabel:
size_hint: (1,None)
text: 'Task Entry'
text_size: self.size
font_size: 40
halign: 'left'
pos_hint: {'top': 1}
md_bg_color: app.theme_cls.accent_light
elevation: 10
MDLabel:
size_hint: (1,None)
text: 'Task Details'
font_size: 15
halign: 'left'
pos_hint: {'top': 1}
MDTextField:
id: i_wiki_tasktitle
size_hint: (0.8,None)
pos_hint: {'top': 1}
hint_text: "Enter task title: "
mode: "rectangle"
multiline: False
required: True
color_mode: 'accent'
icon_right: "arrow-down-drop-circle-outline"
icon_right_color: app.theme_cls.accent_color
MDTextField:
id: i_wiki_taskdetail
size_hint: (0.8,None)
hint_text: "Details of task: (max 200 chars.)"
mode: "rectangle"
multiline: True
max_text_length: 200
color_mode: 'accent'
icon_right: "arrow-down-drop-circle-outline"
icon_right_color: app.theme_cls.accent_color
MDBoxLayout:
orientation: 'horizontal'
size_hint: (1,None)
height: self.minimum_height
width: root.ids.wiki_card_1.width
spacing: '20dp'
MDRaisedButton:
text: 'Select Deadline'
size_hint: (None,None)
halign: 'left'
height: '40dp'
md_bg_color: app.theme_cls.accent_light
on_release: root.show_date_picker()
MDLabel:
text: '[select date]'
id: wiki_dateselected
icon: 'calendar'
size_hint: (None,None)
height: '40dp'
width: '200dp'
MDLabel:
text: ''
size_hint_x: '0.4'
MDRaisedButton:
text: 'Submit'
md_bg_color: app.theme_cls.accent_light
on_release: root.create_task()
MDLabel:
text: ''
ScrollView:
size_hint: (0.6,1)
MDList:
id: wiki_cardcontainer
<TaskItems>
IconLeftWidget:
icon: 'star'
RightCheckBox:
on_active:
root.complete_task()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。