[英]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
中添加RightCheckbox
的id
:
<ListItemWithCheckbox>:
RightCheckbox:
id: cb
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.