我是第一次尝试使用 Kivy。我已经使用从外部文件导入了一个函数#:import centerAlign helperFunctions.centerAlign我的函数(centerAlign)如下所示:def centerAlign(elem, parent): pos = [parent.width/2-elem.width/2, parent.height/2-elem.height/2] return pos它的实现看起来像这样: GridLayout: cols: 2 spacing: 10 size_hint: 0.5, 0.25 pos: centerAlign(self, root)此操作失败,因为它计算两个元素(根元素和 GridLayout)的高度和宽度均为 100。但是,我知道这应该有效,因为当我说: GridLayout: cols: 2 spacing: 10 size_hint: 0.5, 0.25 pos: [root.width/2-self.width/2, root.height/2-self.height/2]效果很好!所以我真的不明白这里发生了什么。我对 Python 有点陌生,所以希望这是一个简单的事情,经验丰富的老手可以提供一些启发。提前致谢!
1 回答
四季花海
TA贡献1811条经验 获得超5个赞
pos: [root.width/2-self.width/2, root.height/2-self.height/2]
当 kv 解析这一行时,可以看到pos
当 root.width、root.height、self.width 或 self.height 改变时它需要更新,因为它们都在这里被引用。为了实现这一点,会自动创建绑定。
pos: centerAlign(self, root)
在此行中没有任何要绑定的属性,因此当发生任何更改时不会更新。因此,您只能得到基于宽度/高度初始值(100)的结果。
要解决此问题,请在 kv 行中引用您想要绑定的属性,或者编写一些其他代码来创建您想要的绑定。
添加回答
举报
0/150
提交
取消