单击 KivyMD Check Box 取消选择任何其他复选框

Clicking KivyMD Check Box deselects any other checked boxes

我希望用户能够 select 复选框列表中的多个项目,但出于某种原因选中第二个复选框而不是 select 第一个,我不明白为什么.我的代码如下:

Python:

from kivymd.app import MDApp
from kivy.lang import Builder
from kivymd.uix.dialog import MDDialog
from kivymd.uix.button import MDFlatButton
from kivymd.uix.list import ILeftBodyTouch
from kivymd.uix.selectioncontrol import MDCheckbox
from kivymd.uix.boxlayout import MDBoxLayout
from kivy.properties import StringProperty


class LeftCheckbox(ILeftBodyTouch, MDCheckbox):
    pass 

class CreateWorkoutCustomDialog(MDBoxLayout):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        lifts = ['Bench Press', 'Squat', 'Deadlift', 'Weighted Pull-ups', 'Rows', 'Shoulder Press']
        for lift in lifts:
            self.ids.box.add_widget(CreateWorkoutLiftRow(lift = lift))

class CreateWorkoutLiftRow(MDBoxLayout):
    lift = StringProperty()

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.lift = kwargs['lift']
    
    def set_icon(self, instance_check):
        instance_check.active = True if instance_check.active == False else instance_check.active == False

class Main2App(MDApp): 
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.lift_dialog = None
        
    def build(self):
        Builder.load_file('dialog.kv')
        return Builder.load_file("scratch.kv")

    def show_lift_dialog(self):
        if not self.lift_dialog:
            self.lift_dialog = MDDialog(
                title="Create New Workout",
                type="custom",
                content_cls = CreateWorkoutCustomDialog(),
                buttons=[
                    MDFlatButton(text="CANCEL"),
                    MDFlatButton(text="OK"),
                ],
            )
        self.lift_dialog.open()
            
Main2App().run()

scratch.kv:


MDScreen:
    MDFlatButton:
        text: "ALERT DIALOG"
        pos_hint: {'center_x': .5, 'center_y': .5}
        on_release: app.show_lift_dialog()

dialog.kv:

#:kivy 2.0.0

<CreateWorkoutCustomDialog>:
    orientation: 'vertical'
    size_hint_y: None
    height: '400dp'

    MDTextField:
        hint_text: "Workout Title"
        required: True
        id: workout_title

    ScrollView:
        MDBoxLayout:
            orientation: 'vertical'
            size_hint_y: None
            height: self.minimum_height
            id: box
            spacing: "12dp"
            
<CreateWorkoutLiftRow>:
    orientation: 'horizontal'
    size_hint_y: None
    height: self.minimum_height

    ItemConfirm:
        text: root.lift
        on_release: root.set_icon(check)
        size_hint_x: .7
        divider: None

        LeftCheckbox:
            id: check
            group: "check"
            active: True

    CreateWorkoutSetsInput:
        id: input
        hint_text: "# sets"
        size_hint_x: .3
     
<ItemConfirm@OneLineAvatarIconListItem>:
    
<CreateWorkoutSetsInput@MDTextField>:

我已经查看了几个教程并尽我最大的努力来理解文档,但我什至看不到离散复选框之间的交互发生在哪里。任何帮助将不胜感激!

这是使用 groupCheckBox 的结果。见 documentation.

group: "check"

只需删除 kv 中的那一行。