2017-06-21 34 views
0

我有一个GridLayout,带有一个按钮和一个图像显示在按钮内部。当我运行我的应用程序时,按钮中的图像有时会居中,有时却不会。为什么?我相信它应该始终以中心为中心。Kivy-Image只集中在运行时的一些时间

.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

+0

你想调整图像大小吗?它是否应该扩展并填充整个按钮? – FJSevilla

+0

我添加了我的意思。基本上在运行时,当我(我认为)得到第一个结果时,我得到了这些结果中的任何一个。 – supreme

回答

1

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

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

 center_x: self.width and self.parent.center_x 
     center_y: self.height and self.parent.center_y 
相关问题