我有一个带有Button的GridLayout和一个在Button内显示的图像。当我运行我的应用程序时,按钮中的图像有时会居中,有时它不会。为什么?我相信它应该永远居中。
.kv文件:
MyLayout:
cols: 2
height: self.minimum_height
pos: root.pos
Button:
size_hint_y: None
height: self.parent.width/2
Image:
source: 'Images/employee/userprofile.png'
size: self.parent.size
center_x: self.parent.center_x
center_y: self.parent.center_y
以下图片是我每次都期待的:
答案 0 :(得分:1)
这是alias属性的常见问题,例如center_x
,right
,top
等。在kv中设置它们不会自动绑定到窗口小部件的大小(添加到kivy并不像它听起来那么微不足道,所以当图像首先正确定位时,如果它在之后调整大小,那么位置不会更新,因为父母的pos没有改变,只有孩子的大小!幸运的是,在这种情况下,根据在特定运行中调度的时间,使代码似乎在一半的时间内工作并不罕见。
无论如何,解决方案非常简单,在绑定中明确引用子节点的大小,因此每次更改时都会重新计算表达式。
center_x: self.width and self.parent.center_x
center_y: self.height and self.parent.center_y