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

如何在Kivy的FloatLayout中正确实现子元素相对父元素定位?

Kivy FloatLayout父/子元素定位问题解析

我希望深入理解Kivy中父/子元素的定位机制,尤其是FloatLayout——它支持基于窗口尺寸的动态布局。

我尝试写了一段简单代码,想让Label基于其父元素的位置进行定位,并在此基础上偏移(向右+200、向上+20):

FloatLayout:
    Button:
        text: 'Home'
        size_hint: 1, .2
        pos_hint: {'x':0, 'top':1}
    
    Label:
        text: 'Welcome'
        # size_hint: 1, .2
        pos_hint: self.parent.x + 200, self.parent.y + 20

实际效果:Label并未出现在预期的从父元素左下角偏移200、20的位置。

我的预期是“Welcome”文本从父元素(FloatLayout)的左下角开始定位,因为Kivy的坐标系以左下角为原点((0, 0)代表左下角),所以想以父元素左下角为基准,向右偏移200,向上偏移20,但实际结果和预期明显不符。


更新

我后来运行了以下代码,这段代码生效了,调整窗口尺寸时文本会在x和y轴上正确适配:

FloatLayout:
    Button:
        text: 'Home'
        size_hint: 1, .2
        pos_hint: {'x':0, 'top':1}
    
        Label:
            text: 'Welcome'
            size: self.parent.size
            center: self.parent.x + 200, self.parent.y + 20

但这种方式似乎有局限性:如果我想修改Label的尺寸怎么办?如果我不想使用center属性(因为我觉得pos_hint更合理)怎么办?我不确定这是否是合适的解决方案,因此没有自行回答问题。

内容的提问来源于stack exchange,提问作者Omar Moodie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:18:26