Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用kivy检测选中的复选框_Python_Kivy - Fatal编程技术网

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

非常感谢:)