向下扩展Kivy ScrollView内容

时间:2016-05-09 14:05:24

标签: python python-3.x kivy

我有一个FloatLayout作为ScrollView的孩子,size_hint_y设置为None。我希望能够在添加越来越多内容时对其进行扩展。问题在于,由于Kivy的坐标系从左下角开始,当我添加到FloatLayout高度时,所有内容都停留在底部。我可以以某种方式延长吗?因为我不认为移动所有小部件是有效的,特别是如果有很多小部件,我也需要处理所有孩子的位置。
这是一个解释有问题行为的片段:

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.scrollview import ScrollView
from kivy.uix.label import Label

class TestApp(App):
    def extend_h(self, *args):
        global msg_float
        msg_float.height += 50

    def build(self):
        global msg_float
        msg_float = FloatLayout(size_hint_y = None)
        bt1_main = Button(on_press = self.extend_h)  
        bl = BoxLayout()
        sc = ScrollView()
        sc.add_widget(msg_float)
        bl.add_widget(sc)
        bl.add_widget(bt1_main)
        lb = Label(text = "Test",
                   size=(100,200),
                   size_hint = (None, None))
        msg_float.add_widget(lb)
        return bl

TestApp().run()

只需按一下按钮,视图就会延伸,"Test"标签会保留在底部,但我希望它保持在最顶层。

1 个答案:

答案 0 :(得分:0)

您可以使用relative layout代替浮动布局来修复坐标,但您应该省略其中任何一个,并将标签添加到网格布局中。查看kivy repo上的示例:

https://github.com/kivy/kivy/blob/master/examples/widgets/scrollview.py

https://github.com/kivy/kivy/blob/master/examples/widgets/scrollview.kv