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
相关产品推荐
相关产品推荐

