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

