伸びる画面

こんな画面を作ろうと思った:

右側だけ伸び縮みするのだよ:

コードはこんな感じなのだよ:

import wx

class MainPenel(wx.Panel):
    def __init__(self, parent, idn, *args, **kw):
        wx.Panel.__init__(self, parent, idn, *args, **kw)

        stext1 = wx.StaticText(self, wx.ID_ANY, u'名前:', style=wx.ALIGN_RIGHT)
        stext2 = wx.StaticText(self, wx.ID_ANY, u'現住所:',  style=wx.ALIGN_RIGHT)

        textc1 = wx.TextCtrl(self, wx.ID_ANY)
        textc2 = wx.TextCtrl(self, wx.ID_ANY)

        sizer = wx.FlexGridSizer(cols=2)
        sizer.AddMany([(stext1, 0, wx.EXPAND | wx.ALL, 5),
                       (textc1, 0, wx.EXPAND | wx.ALL, 5),
                       (stext2, 0, wx.EXPAND | wx.ALL, 5),
                       (textc2, 0, wx.EXPAND | wx.ALL, 5),
                       ])

        sizer.AddSpacer(1)
        sizer.Add(wx.Button(self, wx.ID_ANY, "OK"), 0, wx.ALIGN_RIGHT | wx.ALL, 5)
        
        sizer.AddGrowableCol(1)
        self.SetSizer(sizer)
        sizer.Fit(self)


def main():
    app = wx.PySimpleApp()
    frame = wx.Frame(None, wx.ID_ANY, "データ入力")
    panel = MainPenel(frame, wx.ID_ANY)
    frame.Show()
    app.MainLoop()

if __name__ == '__main__':
    main()

FlexGridSizerAddGrowableCol()で伸び縮みする列を指定するのが重要なのだよ。

参考:wxPython Demo の Sizers の Flexible Grid