wxCollapsiblePaneを使う(今後の課題)

値を入力する項目が普段は折りたたまれているが、ボタンを押すことで展開するようにしたい。
wxPythonのデモの中に、ColapsiblePane.pyがあるので、それを参考にちょこっとテストしてみたが、うまく動作しない。ボタンを押すことで展開はするのであるが、他のコントロールの位置が展開に合わせてズレてくれない。2時間ぐらいあれこれやってみたのだが、時間切れ。
後日の課題として、とりあえずソースを置いておく。

"""
     _main_tree.py
"""

import os, sys
import wx

import MainFrame

class Application(wx.App):
    def OnInit(self):
        frame = MainFrame.MainFrame(None, -1)
        frame.Show(True)
        self.SetTopWindow(frame)
        return True

def main():
    import time

    app = Application(0)
    print "inf> Application started on %s" % time.ctime(time.time())
    app.MainLoop()

if __name__ == '__main__':
    main()
import wx

class MainFrame(wx.Frame):      
    def __init__(self, id, title):
        width, height = 400, 400
        wx.Frame.__init__(self, id, title="Frame 1", size=wx.Size(width, height))

        sizer = wx.BoxSizer(wx.VERTICAL)
        Pan0 = wx.Panel(self, -1)
              
        self.cp = cp = wx.CollapsiblePane(Pan0, label="Properties")
        self.Bind(wx.EVT_COLLAPSIBLEPANE_CHANGED, self.OnPaneChanged, cp)
        self.MakePaneContent(cp.GetPane())
        
        
        line = wx.StaticLine(Pan0, -1, style=wx.LI_HORIZONTAL)
        StTxt1 = wx.StaticText(Pan0, -1, "++++EOF++++")
        
        sizer.Add(cp, 0, wx.LEFT|wx.EXPAND, 5)
        sizer.Add(line, 0, wx.GROW|wx.ALIGN_LEFT|wx.ALL, 5)
        sizer.Add(StTxt1, 0, wx.GROW|wx.ALIGN_LEFT|wx.ALL, 5)

        Pan0.SetSizer(sizer)
        sizer.Fit(Pan0)

    def OnPaneChanged(self, evt=None):
        self.Layout()

    def MakePaneContent(self, pane):
        vsizer = wx.BoxSizer(wx.VERTICAL)
        hsizer1 = wx.BoxSizer(wx.HORIZONTAL)
        
        StTxt0 = wx.StaticText(pane, -1, "Hello world!")
        vsizer.Add(StTxt0, 0, wx.ALIGN_LEFT|wx.ALL, 5)

        # water or air
        self.RBw = wx.RadioButton(pane, -1, "T", style=wx.RB_GROUP)
        self.RBa = wx.RadioButton(pane, -1, "F")
        self.RBw.SetValue(True)
        hsizer1.Add(self.RBw, 0, wx.ALIGN_LEFT|wx.ALL, 5)
        hsizer1.Add(self.RBa, 0, wx.ALIGN_LEFT|wx.ALL, 5)
        vsizer.Add(hsizer1, 0, wx.ALIGN_LEFT|wx.ALL, 5)
        
        pane.SetSizer(vsizer)

無理してこの機能を使わなくてもよいのだが、使えればかっこよくなる気がして、少しむきになって時間を浪費してしまった。
でもいろいろ悩んだことで、自分が何をわかっていないかがわかった。