使用Kivy模拟matplotlib交互功能时弹窗关闭需点击两次问题排查
问题原因
需要点击两次关闭按钮的核心原因是Switch的on_active事件在状态从True切换为False时也会触发:
- 首次拨动Switch到开启状态(active变为True),触发事件弹出第一个弹窗
- 点击弹窗的关闭按钮时,代码会将
switch.active设为False,此时on_active再次被触发,又创建了第二个新弹窗叠在原有弹窗上方 - 第一次点击关闭按钮仅关掉了底层的第一个弹窗,视觉上仍能看到第二个弹窗,所以需要再点击一次关闭第二个
修复方案
仅需修改KV文件中Switch的on_active绑定逻辑,添加判断仅当Switch处于激活状态(active为True)时才弹出弹窗即可:
<MyBoxLayout>: switch: tog_switch canvas.before: Color: rgba: (1, 1, 1, 1) Rectangle: size: self.size pos: self.pos orientation: "vertical" padding: 20 spacing: 10 Switch: id: tog_switch # 仅当active为True时才打开弹窗 on_active: if self.active: Factory.MyPopup().open()
内容的提问来源于stack exchange,提问作者Abdulla Saeed
相关产品推荐
相关产品推荐

