我使用文档中的此方法 https://kivymd.readthedocs.io/en/latest/components/list/index.html#custom-list-item 创建一个带有复选框的列表。我使用带有组选项的复选框。一切都很好。但我不知道如何访问正确的复选框?我如何理解列表的哪个元素包含活动复选框?
我的 PY 文件
class ListItemWithCheckbox(OneLineAvatarIconListItem):
'''Custom list item.'''
icon = StringProperty("android")
class RightCheckbox(IRightBodyTouch, MDCheckbox):
'''Custom right container.'''
def on_checkbox_active(self, checkbox, value):
if value:
print('The checkbox', checkbox, 'is active', 'and', checkbox.state, 'state')
print(value)
else:
print('The checkbox', checkbox, 'is inactive', 'and', checkbox.state, 'state')
print(value)
class DatabaseListScreen(Screen):
store = JsonStore('Config/database_settings.json')
def on_enter(self, *args):
icons = list(md_icons.keys())
with open('Config/Database_settings.json', 'r', encoding='utf-8') as fh:
data = json.load(fh)
for i in range(3):
self.ids.scroll.clear_widgets()
for i in range(3):
config_name = data["Database"][i]["config"]
listitem = ListItemWithCheckbox(text=config_name, icon=icons[i])
self.ids.scroll.add_widget(listitem)
def build(self):
return Builder.load_file("Enter/DatabaseListScreen.kv")
KV:
<ListItemWithCheckbox>:
IconLeftWidget:
icon: root.icon
RightCheckbox:
group: 'group'
on_active: self.on_checkbox_active(*args)
<DatabaseListScreen>:
name: "database_list_screen"
BoxLayout:
orientation: "vertical"
ScrollView:
MDList:
id: scroll
MDRaisedButton:
text: 'Назад'
multiline: True
halign: "center"
pos_hint: {"center_x": .5, "center_y": .4}
on_press: app.root.current = 'database_settings_screen'
答案 0 :(得分:0)
<ListItemWithCheckbox>
[...]
RightCheckbox:
id: check
[...]
def get_active_check(self):
for ListItemWithCheckbox in self.DatabaseListScreen.ids.scroll.children:
if ListItemWithCheckbox.ids.check.active:
print(ListItemWithCheckbox)
break