如何在Python端的ScrollView中将minimum_height绑定到BoxLayout?
我在这里:
class BrokenScreen(screen):
def __init__(self, **kwargs):
super(BrokenScreen,self).__init__(**kwargs)
# build widgets
self.pop = Popup(auto_dismiss=False,size=(.8,.8))
self.box = BoxLayout(orientation='vertical', size_hint_y=None)
self.scroll = ScrollView()
# bind height, this is the line bringing about the error
self.box.bind(minimum_height=self.box.setter('height'))
# integrate
self.scroll.add_widget(self.box)
self.pop.add_widget(self.scroll)
当我尝试编译时,出现以下错误:
KeyError: 'minimum_height'
做什么?
答案 0 :(得分:1)
Miket25询问box
是否具有minimum_height
参数。
我能够通过使用GridLayout来解决我的问题。 所以,可能不是(编辑:我对于box
是否有minimum_height
是错误的,请参见已接受的答复。)
# build widgets
self.pop = Popup(auto_dismiss=False,size=(.8,.8))
self.grid = GridLayout(cols=1, size_hint_y=None) #<- change this
self.scroll = ScrollView(size=self.size)
# bind height, this is the line bringing about the error
self.grid.bind(minimum_height=self.grid.setter('height')) # only changed var name
# integrate
self.scroll.add_widget(self.grid) # changed var name
self.pop.add_widget(self.scroll)
答案 1 :(得分:1)
BoxLayout
确实有一个名为minimum_height
的属性。
自动计算出容纳所有孩子所需的最小高度。
因此,您不应修改minimum_height
中的BoxLayout
为防止此类修改,Kivy将其设置为 只读 。
这就是您无权对其进行修改的原因。
证明它的最好方法是在Kivy文件夹中打开boxlayout.py。
minimum_height = NumericProperty(0)
'''Automatically computed minimum height needed to contain all children.
.. versionadded:: 1.10.0
:attr:`minimum_height` is a :class:`~kivy.properties.NumericProperty` and
defaults to 0. It is read only.
'''