ラジオボタンで値を選んでOKとすると、値をファイルに書き出す(RadioBox2.py)

いくつかの値を並べて、その中の一つをラジオボタンで選択できるようにする。選んだらOKボタンを押して、選んだ値をファイルに書き出すようにしたい。
まず、ラジオボタンの表示はデモの中の"RadioBox.py"を参照した。これに加えて、OKボタンの表示、値をファイルへ書き出すイベントを定義して、RadioBox2.pyを作成する。

以下は、RadioBox2.pyのソース

import  wx
#----------------------------------------------------------------------
class TestRadioBox(wx.Panel):
    def __init__(self, parent, log):
        self.log = log
        wx.Panel.__init__(self, parent, -1)

        sampleList = ['00', '01', '02', '03']
        sizer = wx.BoxSizer(wx.VERTICAL)
        rb = wx.RadioBox(
                self, -1, "wx.RadioBox", wx.DefaultPosition, wx.DefaultSize,
                sampleList, 2, wx.RA_SPECIFY_COLS
                )       
        self.Bind(wx.EVT_RADIOBOX, self.EvtRadioBox, rb)
        sizer.Add(rb, 0, wx.ALL, 20)
        self.SetSizer(sizer)

        b=wx.Button(self, -1, "Write the value")
        self.Bind(wx.EVT_BUTTON, self.OnButton, b)
        sizer.Add(b, 0, wx.ALL, 20)

    def EvtRadioBox(self, event):
        self.ans = event.GetInt()
    self.myfile = open('WriteDataFile2.txt', 'w')

    def OnButton(self, evt):
        self.myfile.write(str(self.ans))
        print self.ans
        self.myfile.close()
#----------------------------------------------------------------------
def runTest(frame, nb, log):
    win = TestRadioBox(nb, log)
    return win

if __name__ == '__main__':
    import sys,os
    import run
    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])

4つラジオボタンがあり(sampleList)、一つを選ぶ(EvtRadioBox)と値(event.GetInt())がファイルへ書き込まれる(OnButton)。
何とか動いた。

最初、self.myfile.write(self.ans)としたら値を書き込めなかった。strで文字列に変換した。

ウィジェットの配置にはsizerを利用した。配置に関しては、日経ソフトウェア2007年3月号 PYTHON超特急 を参考にさせていただきました。

日経ソフトウエア 2007年 03月号 [雑誌]

日経ソフトウエア 2007年 03月号 [雑誌]