I'm still trying to migrate an old app from wx2.8 to wx4.
After several different styling adjustments, i got a very similar app under normal conditions (we want to support wx28 and wx4 until we're done, but we currently only have to change the imports).
We also have to support the 125% windows GUI scaling, though. And with these settings, components with a "defaultSize" (i.e. (-1,-1) ) do get very different scalings between the two versions, especially in the y directions.
Unfortunately, this destroys our layout (sadly, a wild mix between fixed size and default size components).
Is ther any way to set the behavior on different Window scalings? I know that one can get the scaling by checking ScreenDC.GetPPI, but i hesitate to change every component separately and would rather like some kind ob global setting. 
So, is there a way to change the defaultSize behavior globally? Or is there at least some kind of reference about what changed, so i won't miss anything?
Usually the best thing to do is to always use sizers for layout, and when you do need to specify specific values for size and position, then use values based on font sizes. To help with this there are the wx.Window.GetCharWidth and GetCharHeight methods. 
There is also the concept of "Dialog Units", where each unit is a fraction of the average character sizes. See wx.Window methods ConvertDialogToPixels and ConvertPixelsToDialog.
wxPython 2.8 to wxPython 4 - default size difference