2016-05-09 21 views
1

Ich habe eine FloatLayout als Kind von ScrollView mit size_hint_y auf None festgelegt. Ich möchte es erweitern können, während ich mehr und mehr Inhalt hinzufüge. Das Problem ist, dass, da Kivys Koordinatensystem unten links beginnt, wenn ich zur Höhe FloatLayout hinzufüge, der gesamte Inhalt unten bleibt. Kann ich es irgendwie verlängern? Weil ich nicht denke, dass das Bewegen aller Widgets effizient ist, besonders wenn es viele von ihnen gibt und ich auch die Position aller Kinder handhaben muss.
Hier ist ein Ausschnitt, den das problematische Verhalten erklärt:Erweitern der Kivy ScrollView Inhalte

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() 

Mit einem Knopfdruck, der Blick erstreckt und das "Test" Etikett bleibt am Boden, aber ich würde wollen, dass es an der Spitze bleiben.

Antwort