2013-09-26 3 views
0

Если у меня есть класс, который я определяю в исходном файле Python в качестве дочернего элемента Widget, необходимо ли мне добавить ребенка FloatLayout или я могу просто разместить элементы внутри Widget, не используя FloatLayout вообще ?Нужно ли добавлять `FloatLayout` внутри` Widget`?

# Python source 
class FooBar(Widget): 
    pass 

# Kivy source 
<FooBar>: 
    FloatLayout: # Is this necessary? 
     SomeChildWidget: 
      ... 
     AnotherChildWidget: 
      ... 

ответ

0

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

add_widget метод (и children property) является частью Widget класса, и Layout просто наследует от Widget. В качестве примера у Kivy pong tutorial нет никаких макетов.

Примечание: Если вы начинаете задаваться вопросом о разнице использования Widget и FloatLayout. По сути, последний почитает атрибуты Widget.pos_hint и Widget.size_hint. Это позволяет использовать пропорциональные значения в размере Widget для позиционирования.

0

Беглый взгляд по Kv language documentation предполагает, что нет, вам не нужна раскладка внутри виджета. Рассмотрим пример, они дают under the template section:

<MyWidget>: 
    Button: 
     text: "Hello world, watch this text wrap inside the button" 
     text_size: self.size 
     font_size: '25sp' 
     markup: True 
    Button: 
     text: "Even absolute is relative to itself" 
     text_size: self.size 
     font_size: '25sp' 
     markup: True 
    Button: 
     text: "Repeating the same thing over and over in a comp = fail" 
     text_size: self.size 
     font_size: '25sp' 
     markup: True 

Здесь 3 кнопки виджеты были размещены непосредственно под <MyWidget> декларации.

+0

Я заметил, что поведение и внешний вид виджета - это то, чем я хочу, но мне было интересно, является ли это всего лишь следствием реализации или действительно ли это желаемое поведение библиотеки. –

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