将minimum_height绑定到scrollview中的boxlayout时发生键错误

时间:2018-10-07 01:18:57

标签: python kivy

如何在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'

做什么?

2 个答案:

答案 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.
'''