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

如何不修改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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 15:39:00