You need to enable JavaScript to run this app. Kivy多层BoxLayout嵌套时内部按钮size_hint不生效问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Kivy多层BoxLayout嵌套时内部按钮size_hint不生效问题咨询

问题原因

这不是Kivy的固有规则,Kivy完全支持多层BoxLayout嵌套,问题出在你对水平BoxLayout的尺寸分配规则不熟悉:
水平方向的BoxLayout会默认将所有子组件的size_hint_x值相加得到总比例,再按每个子组件的size_hint_x占总比例的份额分配宽度。你当前的场景里:

  • 包裹b1、b2的BoxLayout是默认水平方向
  • b1的size_hint_x设为0.3,b2的size_hint_x是默认值1
  • 两者总比例为0.3+1=1.3,最终b1实际占比为0.3/1.3≈23%,和你预期的30%不符,所以看起来参数不生效。
    而你把b1、b2移到外层垂直BoxLayout里时,垂直方向的BoxLayout会单独计算每个子组件的水平尺寸,size_hint_x直接生效,所以表现符合预期。

另外你的Python代码存在拼写错误:你导入的类是App,定义MenuApp时继承的APP大小写不匹配,运行时会报错,需要修正为class MenuApp(App):。

解决方法

如果要实现b1占所在水平BoxLayout 30%宽度,b2占剩下70%宽度,只需要给b2也指定size_hint_x为0.7即可,修改对应kv代码段:

BoxLayout:
    Button:
        text: "b1"
        size_hint: .3, 1
    Button:
        text: "b2"
        size_hint: .7, 1

如果要让b1固定宽度而非按比例分配,可以取消size_hint_x,手动指定宽度:

Button:
    text: "b1"
    size_hint: None, 1
    width: 150 # 按需求调整数值

内容的提问来源于stack exchange,提问作者James.L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 15:36:02