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