2016-05-07 2 views
0

Я хочу сделать макет внутри макета с использованием Kivy библиотеки в Python вместо использования языка строителя Kivy, как показано ниже:Макетов в пределах макетов в Kivy с 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' 
""") 

Я с трудом выяснить, как для доступа к второму макету для добавления в него виджетов. Пример кода ниже:

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 

Как вы можете видеть, я попытался получить доступ top_buttons за пределами макета, но я не могу понять, как достичь этого, поэтому я не могу добавить свои виджеты к нему. Как мне получить доступ к нему для добавления виджетов?

ответ

0
class ListScreen(Screen): 

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

Именно из-за этой линии вы не можете использовать переменную top_buttons, потому что вы использовали это в качестве ключевого слова , а не переменная. Это должно выглядеть так:

class ListScreen(Screen): 

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

Отлично! Спасибо! – jdanaher

Смежные вопросы