【wxPython】フレームの作成

フレームは代表的なウィンドウオブジェクトです。
以下のコードでは「Test Frame」と言う名前の最小限の空のアプリケーションウィンドウが表示されます。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import wx


class MyApp(wx.App):
    def OnInit(self):
        self.frame = MyFrame(None, title="Test Frame")
        self.SetTopWindow(self.frame)
        self.frame.Show()
        return True


class MyFrame(wx.Frame):
    def __init__(self, parent, id=wx.ID_ANY, title="",
                 pos=wx.DefaultPosition, size=wx.DefaultSize,
                 style=wx.DEFAULT_FRAME_STYLE,
                 name="MyFrame"):
        super(MyFrame, self).__init__(parent, id, title, pos, size, style, name)
        self.panel = wx.Panel(self)
        
if __name__ == "__main__":
    app = MyApp(False)
    app.MainLoop()

同じことは以下のコードでもできます。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import wx

app = wx.App()
frame = wx.Frame(None, -1, "Test Frame")
frame.Show()
app.MainLoop()

実行すると、以下のように表示されます。
f:id:hiron_tn:20140721083758p:plain

どのように動くか

フレームは最も重要なコンテナウィジェットで、他のウィジェットを含むことができます。
上記のクラスで大事なことは、フレームの子供としてパネルオブジェクトを作成したことです。
パネルは他のウィジェットを含むことができます。


まず、OnInitメソッドの中でフレームのインスタンスを作ります。そのとき最初のパラメータとして「None」を渡しています。これはフレームの親ウィンドウを指定するために使われます。「None」は親を持たないことを示しています。また、2番目のパラメータとして「Test Frame」を渡しています。これはウィンドウのタイトルを指定しています。

次に、SetTopWindowメソッドを呼んでいます。これは新しく作ったMyFrameインスタンスをアプリケーションのトップウィンドウとしてセットするために呼んでいます。

最後にフレームに対して、Showメソッドを呼んでいます。これによりフレームを表示します。