Python 如何使用kivy检测选中的复选框
多亏了这段代码,我可以创建界面来显示信息列表。 但是,当我单击“保存”按钮时,我需要创建一个函数来打印复选框中选中的所有文本项Python 如何使用kivy检测选中的复选框,python,kivy,Python,Kivy,多亏了这段代码,我可以创建界面来显示信息列表。 但是,当我单击“保存”按钮时,我需要创建一个函数来打印复选框中选中的所有文本项 from kivy.lang import Builder from kivymd.app import MDApp from kivymd.uix.list import ILeftBodyTouch, TwoLineAvatarIconListItem from kivymd.uix.selectioncontrol import MDCheckbox KV
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()
来自kivy.lang导入生成器
从kivymd.app导入MDApp
从kivymd.uix.list导入ILeftBodyTouch,两个LinearVatariconListItem
从kivymd.uix.selectioncontrol导入MDCheckbox
KV=”“”
:
右复选框:
盒子布局:
滚动视图:
MDList:
id:滚动
MDRaisedButton:
文本:“保存”
"""
类ListItemWithCheckbox(TwoLineavariconListItem):
“”“自定义列表项。”“”
类RightCheckbox(ILeftBodyTouch,MDCheckbox):
“”“自定义右容器。”“”
类MainApp(MDApp):
def生成(自):
返回生成器。加载字符串(KV)
def on_启动(自):
对于范围(15)内的i:
self.root.ids.scroll.add\u小部件(
ListItemWithCheckbox(text=f“Item{i}”,secondary_text=f“Item{i+10}”)
)
MainApp().run()
您可以通过在应用程序中定义一个方法来实现:
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
以在按钮上调用该方法
释放:
MDRaisedButton:
text: "Save"
on_release: app.save_checked()
并在kv
中为right复选框添加id
:
<ListItemWithCheckbox>:
RightCheckbox:
id: cb
:
右复选框:
身份证号码:cb
非常感谢:)