我有一个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"
标签会保留在底部,但我希望它保持在最顶层。
答案 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