簡體   English   中英

Kivy 帶有復選框的 MDList。 選擇具有活動復選框的正確項目

[英]Kivy MDList with checkboxes. Choose right item with active checbox

我使用文檔中的這種方法https://kivymd.readthedocs.io/en/latest/components/list/index.html#custom-list-item創建帶有復選框的列表。 我使用帶有 group 選項的復選框。 一切都很好。 但我不知道如何訪問正確的復選框? 我如何理解列表的哪個元素包含活動復選框?

我的 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")

千伏:

<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'
<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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM