Kivy-Image仅在运行时的某些时间居中

时间:2017-06-21 15:41:40

标签: image python-3.x kivy grid-layout kivy-language

我有一个带有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

以下图片是我每次都期待的:

enter image description here

这是我有时得到的: enter image description here

1 个答案:

答案 0 :(得分:1)

这是alias属性的常见问题,例如center_xrighttop等。在kv中设置它们不会自动绑定到窗口小部件的大小(添加到kivy并不像它听起来那么微不足道,所以当图像首先正确定位时,如果它在之后调整大小,那么位置不会更新,因为父母的pos没有改变,只有孩子的大小!幸运的是,在这种情况下,根据在特定运行中调度的时间,使代码似乎在一半的时间内工作并不罕见。

无论如何,解决方案非常简单,在绑定中明确引用子节点的大小,因此每次更改时都会重新计算表达式。

        center_x: self.width and self.parent.center_x
        center_y: self.height and self.parent.center_y