为了账号安全,请及时绑定邮箱和手机立即绑定

在 Kivy 中计算相对于其他对象的属性

在 Kivy 中计算相对于其他对象的属性

互换的青春 2023-09-26 16:42:09
我是第一次尝试使用 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 行中引用您想要绑定的属性,或者编写一些其他代码来创建您想要的绑定。


查看完整回答
反对 回复 2023-09-26
  • 1 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信