2015-07-03 6 views
0

У меня есть много кода, который не имеет значения для этого вопроса, поэтому я просто объясню, как построено мое дерево виджетов.Доступ к родительскому корневому виджету - kivy

У меня есть два экрана и различные макеты, кнопки и виджеты на них. В принципе, как это:

ScreenManager: 
    Screen1: 
    Screen2: 
     FloatLayout: 
      Button1 
      Button2 
      Button3 
      Widget1 
      Widget2: 
       Label: 
        text: 
        pos: root.width*0.8, root.height*0.8 

Я хочу поместить метку внутри виджета, потому что я буду добавлять больше ярлыков к нему, но не знаю, как получить доступ к ширине screen2. Если я использую root.width, я получаю ширину родительского виджета, который меньше окна, и не может использовать отношения с ним. Я попытался получить доступ к window.width, но это дает мне ошибку с идентификаторами.

Буду признателен, если кто-нибудь объяснит мне, как получить доступ к разным родителям через ids. Спасибо!

+0

Я думаю, вы должны сделать это так: 'root.parent.parent.parent ..... width' использовать родительский до тех пор, пока вы не достигнете нужного виджета. – kiok46

+0

используйте идентификатор для Screen2 – fins

ответ

2

Чтобы ответить на прямой вопрос:

ScreenManager: 
    Screen1: 
    Screen2: 
     id: screen2 
     FloatLayout: 
      Button1 
      Button2 
      Button3 
      Widget1 
      Widget2: 
       Label: 
        text: 
        pos: screen2.width*0.8, screen2.height*0.8 

Однако, вероятно, было бы лучше использовать классы компоновки, чтобы избежать необходимости вручную указать этот материал.

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