2016-05-07 19 views
0

Ich mag ein Layout in einem Layout machen mit der Kivy Bibliothek in Python anstelle der Verwendung des Kivy Sprache Builder wie unten dargestellt:Layouts innerhalb Layouts in Kivy mit Python

Builder.load_string(""" 
<ListScreen>: 
    BoxLayout: 
      orientation: 'vertical' 
      BoxLayout: 
       size_hint_y: .1 
       Button: 
        text: 'Save' 
       Button: 
        text: 'Load' 
       Button: 
        text: 'New' 
       Button: 
        text: 'New' 
        on_press: 
         root.manager.transition.direction = 'down' 
         root.manager.current = 'search' 
""") 

Ich habe Schwierigkeiten herauszufinden, wie um auf das zweite Layout zuzugreifen, um Widgets hinzuzufügen. Beispielcode unten:

class ListScreen(Screen): 
    layout = BoxLayout(orientation ='vertical') 
    layout.add_widget(top_buttons=BoxLayout()) 
    top_buttons.add_widget(save=Button(text='Save') 
    #^problem here, it won't recognize top_buttons 

Wie Sie sehen können, habe ich versucht, top_buttons zugreifen außerhalb des Layouts, aber ich kann nicht herausfinden, wie es zu erreichen, so kann ich meine Widgets es nicht hinzufügen. Wie sollte ich darauf zugreifen, um Widgets hinzuzufügen?

Antwort

0
class ListScreen(Screen): 

    layout = BoxLayout(orientation ='vertical') 
    layout.add_widget(top_buttons=BoxLayout()) # <-------- 
    top_buttons.add_widget(save=Button(text='Save') 

Genau wegen dieser Zeile, die Sie nicht die Variable top_buttons verwenden können, weil Sie, dass als Stichwort verwendet, keine Variable. Es sollte so aussehen:

class ListScreen(Screen): 

    layout = BoxLayout(orientation ='vertical') 
    top_buttons=BoxLayout() 
    layout.add_widget(top_buttons) # <-------- 
    top_buttons.add_widget(save=Button(text='Save') 
+0

Perfekt! Vielen Dank! – jdanaher