簡體   English   中英

如何使用 kivy 檢測選中的復選框

[英]How can I detect selected checkbox with kivy

多虧了這段代碼,我可以創建界面來呈現信息列表。 但是,當我單擊“保存”按鈕時,我需要創建一個 function 我打印在 CheckBox 中選擇的所有文本項

from kivy.lang import Builder

from kivymd.app import MDApp
from kivymd.uix.list import ILeftBodyTouch, TwoLineAvatarIconListItem
from kivymd.uix.selectioncontrol import MDCheckbox


KV = """
<ListItemWithCheckbox>:

    RightCheckbox:


BoxLayout:

    ScrollView:

        MDList:
            id: scroll
            
    MDRaisedButton:
        text: "Save"
"""


class ListItemWithCheckbox(TwoLineAvatarIconListItem):
    """Custom list item."""



class RightCheckbox(ILeftBodyTouch, MDCheckbox):
    """Custom right container."""


class MainApp(MDApp):
    def build(self):
        return Builder.load_string(KV)

    def on_start(self):
        for i in range(15):
            self.root.ids.scroll.add_widget(
                ListItemWithCheckbox(text=f"Item {i}", secondary_text=f"Item {i+10}")
            )


MainApp().run()

您可以通過在App中定義一個方法來做到這一點:

def save_checked(self):
    mdlist = self.root.ids.scroll  # get reference to the MDList
    for wid in mdlist.children:
        if isinstance(wid, ListItemWithCheckbox):  # only interested in the ListItemWithCheckboxes
            cb = wid.ids.cb  # use the id defined in kv
            if cb.active:  # only print selected items
                print(wid.text, wid.secondary_text)

然后修改kv以在Button釋放時調用該方法:

MDRaisedButton:
    text: "Save"
    on_release: app.save_checked()

並在kv中添加RightCheckboxid

<ListItemWithCheckbox>:

    RightCheckbox:
        id: cb

暫無
暫無

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

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