将已分组的复选框(单选按钮)全部单击,并且从屏幕上的任何位置单击?

问题描述 投票:0回答:1

这是我认为非常简单的屏幕配置,我得到三个单选按钮。但是,单击屏幕上的任意位置会导致选择第三个单选按钮-您无法选择第一个或第二个单选按钮,为什么当用户单击屏幕上的任意位置而不是单选按钮时会选择它?再次单击任意位置将取消选择第三项。


<FirstProfile>
    id: firstprofile

    disc_1: disc_1
    disc_2: disc_2
    disc_3: disc_3

    canvas.before:
        Color:
            rgba: 1,1,1,1
        Rectangle:
            size: self.size

    FloatLayout:

        CheckBox:
            id: disc_1
            pos_hint: {'x':0.05,'center_y':0.7}
            group: "disc"
            active: False

        Label:
            text: "Disc 1"
            pos_hint: {'x':0.25,'center_y':0.7}
            text_size: 200,80
            halign: 'left'
            valign: 'middle'

        CheckBox:
            id: disc_2
            pos_hint: {'x':0.05,'center_y':0.65}
            group: "disc"
            active: False

        Label:
            text: "Disc 2"
            pos_hint: {'x':0.25,'center_y':0.65}
            text_size: 200,80
            halign: 'left'
            valign: 'middle'

        CheckBox:
            id: disc_3
            pos_hint: {'x':0.05,'center_y':0.6}
            group: "disc"
            active: False

        Label:
            text: "Disc 3"
            pos_hint: {'x':0.25,'center_y':0.6}
            text_size: 200,80
            halign: 'left'
            valign: 'middle'


python kivy kivy-language
1个回答
0
投票

问题是您尚未为CheckBoxes设置任何大小,因此为每个CheckBox分配了默认的size_hint (1,1),这意味着每个与自己的父级FloatLayout的大小相同。当您单击该FloatLayout上的任意位置时,最后添加的CheckBox(“光盘3”)将获得该事件并自行声明该事件,其他人则永远不会看到该事件。

这里是kv的修改版本,它设置了一些大小:

<FirstProfile>
    id: firstprofile

    disc_1: disc_1
    disc_2: disc_2
    disc_3: disc_3

    FloatLayout:
        CheckBox:
            id: disc_1
            pos_hint: {'x':0.05,'center_y':0.7}
            group: "disc"
            active: False
            size_hint: None, None
            size: sp(32), sp(32)

        Label:
            text: "Disc 1"
            pos_hint: {'x':0.25,'center_y':0.7}
            text_size: 200,80
            halign: 'left'
            valign: 'middle'
            size_hint: None, None
            size: self.texture_size

        CheckBox:
            id: disc_2
            pos_hint: {'x':0.05,'center_y':0.65}
            group: "disc"
            active: False
            size_hint: None, None
            size: sp(32), sp(32)

        Label:
            text: "Disc 2"
            pos_hint: {'x':0.25,'center_y':0.65}
            text_size: 200,80
            halign: 'left'
            valign: 'middle'
            size_hint: None, None
            size: self.texture_size

        CheckBox:
            id: disc_3
            pos_hint: {'x':0.05,'center_y':0.6}
            group: "disc"
            active: False
            size_hint: None, None
            size: sp(32), sp(32)

        Label:
            text: "Disc 3"
            pos_hint: {'x':0.25,'center_y':0.6}
            text_size: 200,80
            halign: 'left'
            valign: 'middle'
            size_hint: None, None
            size: self.texture_size
© www.soinside.com 2019 - 2024. All rights reserved.