Differences include size and position.
In the general case, GridLayout ( cols: 1 ) will always contain elements in one column , while there is great flexibility for organizing individual widgets when using BoxLayout ( orientation: 'vertical' ) .
Here is a very simple example of what you can do with BoxLayout , because it honors pos_hint , size and size_hint (and others, such as center_x , x , y , right , - note that they also depend on the orientation of vertical or horizontal BoxLayout ), which affects individual widgets:
< Test@BoxLayout >: orientation: 'vertical' Button: text: 'a' size_hint: None, None size: 100,50 pos_hint: { 'center_x' : .5 } Button: text: 'b'
This is the output on the 200x200 screen:

If you try to do the same, but using GridLayout instead, you will get the following:

Finally, GridLayout has some properties for controlling column size:
col_default_width : for default width for all columnscol_width : a list of widths for each column (not useful in this because we only have one)col_force_default : which ignores any existing size_hint or size for individual widgets and forces the column widthminimum_width : so the column is not shrinking too much
source share