I clearly haven't figured out what wx.EXPAND means when using BoxSizers.

1. What does 0, wx.EXPAND mean in a horizontal sizer?

2. What does 1, wx.EXPAND mean in a horizontal sizer?

3. What does 0, wx.EXPAND mean in a vertical sizer?

4. What does 1, wx.EXPAND mean in a vertical sizer?

Here it is in a nutshell. In a box sizer the proportion parameter indicates how much of a share of the free space in the direction of the sizer's orientation that will be given to the item. (Items with a proportion of zero are given their minimal or best size and are not counted in the proportion calculations.) In other words, if you have three items in a box sizer with proportions of 1, 2 and 3, then the total is 6 and so the first item gets 1/6 of the free space[*], the 2nd gets 2/6 and the third gets 3/6. All of this in the the direction indicated by the sizer's orientation parameter. wx.EXPAND controls whether the item will be expanded in the other direction, e.g., expanded horizontally in a vertical sizer and vice versa.

[*] In 2.8 the proportional items are sized into the free space without taking the their min/best sizes into account. In 2.9 that will be changing slightly and all items' min/best size will be addressed first and then the proportions will be used to assign the remaining space if any is left.

Does wx.EXPAND have the same meaning in a GridSizer?

It's a little different. In grid sizers wx.EXPAND will cause an item to fill its grid cell both ways (after adjusting for borders.)