2013-08-14 1 views
4

BoxLayout(orientation='vertical') VS. GridLayout(cols=1):Kivy: BoxLayout против GridLayout

Они оба делают то же самое, нет? Есть ли причина выбора одного над другим?

+0

BoxLayout __probably__ имеет меньше работы, чтобы сделать под капотом ... но его маргинал я бы представил. так что идите с тем, что чувствует naturak для этого. Я лично считаю, что вертикальная boxlayout лучше описывает, что это такое. –

ответ

12

Различия включают в себя размер и положение.

В общем, GridLayout (cols: 1) всегда будет держать элементы в одном столбце, в то время как есть больше гибкости для организации отдельных виджетов при использовании BoxLayout (orientation: 'vertical').

Вот очень простой пример того, что вы можете сделать с BoxLayout, потому что он почитает pos_hint, size и size_hint (и другие, такие, как center_x, x, y, right, - обратите внимание, что они также зависят от ориентации vertical или horizontal из BoxLayout), который влияет на отдельные виджеты:

<[email protected]>: 
    orientation: 'vertical' 
    Button: 
     text: 'a' 
     size_hint: None, None 
     size: 100,50 
     pos_hint: { 'center_x' : .5 } 
    Button: 
     text: 'b' 

Это выход на экране 200х200:

BoxLayout with vertical orientation

Если вы пытаетесь сделать то же самое, но с использованием GridLayout вместо этого, то вы получите это:

GridLayout with cols: 1

Наконец, GridLayout обладает некоторыми свойствами, чтобы контролировать размер столбца:

  • col_default_width: для стандартной ширины всех столбцов
  • col_width: a lis т ширины для каждого столбца (не полезной в этом случае, так как мы имеем только один)
  • col_force_default: который будет игнорировать любые существующие size_hint или size для отдельных виджетов и заставить ширину столбца
  • minimum_width: так что столбец не дают усадки слишком много
+2

Вы забыли «' »в конце pos_hint, и это сводит меня с ума ... –