You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kivy开发点击ToggleButton时如何删除指定BoxLayout(Speca)

实现方案

只需要修改2处代码即可完成需求:

第一步:给kv文件中的Speca组件添加id引用

打开my.kv,找到Speca组件的声明位置,添加id属性:

# 原来的代码
Speca: #<------ THIS IS THE BOXLAYOUT I WANT TO REMOVE

# 修改后的代码
Speca:
    id: speca_widget

第二步:在ToggleButton的状态回调方法中添加移除逻辑

打开main.py,找到MainWidget类的on_state方法,在方法开头添加移除Speca的逻辑:

def on_state(self, togglebutton):
    # 新增逻辑:判断Speca还存在于父容器时,执行移除
    if hasattr(self.ids, 'speca_widget') and self.ids.speca_widget.parent is not None:
        self.ids.scd.remove_widget(self.ids.speca_widget)
    
    # 以下保留你原来的逻辑不变
    global amd
    tb = togglebutton
    text1=tb.text

    if text1=="0":
        amd="50dp"
    elif text1=="1":
        amd="100dp"
    else:
        amd="200dp"

    if self.cal6:
        self.cal6.parent.remove_widget(self.cal6)

    self.cal6 =Spec()
    self.ids.scd.add_widget(self.cal6, index=2)

效果验证

运行应用后:

  • 下拉选择Home Spinner的任意选项,生成ToggleButton
  • 点击任意ToggleButton,初始存在的Speca提示区域会自动消失,同时执行你原来的添加Spec组件的逻辑

内容的提问来源于stack exchange,提问作者Batuhan Karakaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:27:03