如何不修改KV语言代码,用Python在Kivy GridLayout中将按钮放在已有按钮上方
Kivy动态按钮插入指定位置解决方案
核心实现逻辑:Kivy中add_widget方法默认将新控件添加到子控件列表的末尾,对应布局的最下方,我们只需要调用该方法时指定index参数控制插入位置,即可实现将新按钮放在原有按钮上方的需求,全程不需要修改KV代码、也不需要在KV中添加循环。
以下是完整可运行的修改后代码:
from kivy.lang.builder import Builder from kivy.app import App from kivy.uix.button import Button kv=Builder.load_string(''' BoxLayout: GridLayout: id:grid_button cols:1 Button: text:'2' ''') class Accounting(App): def build(self): return kv def on_start(self): # 倒序生成1、0两个数值,每次插入到布局最顶部 for a in range(1, -1, -1): self.root.ids.grid_button.add_widget(Button(text=str(a)), index=0) Accounting().run()
实现说明
range(1, -1, -1)会按顺序生成1、0两个数值add_widget的index=0参数代表将新控件插入到布局的最顶部:第一次插入text为1的按钮,布局从上到下顺序为1、2;第二次插入text为0的按钮,布局最终顺序为0、1、2,符合需求。
内容的提问来源于stack exchange,提问作者user16271811
相关产品推荐
相关产品推荐

