wxPythonでAA管理ツールをつくろう!第一回 GUIを作る

あいさつ

つかさです。
最近AAを多用するので、AA管理ツールを作ろうと思います。

くらいができたらなと思ってます。既存のツールもあるにはあるのですが、これらをすべて満たすものはなさそうという理由で自作します。

今回、これを作成する過程を連載記事にしようと思います。高度なものにはなりようがないのですが、簡単なプログラムを作る人の参考になればと思います。最終的には次のようなのになる予定ですが、まだ未完成。

同じようなコンセプトで以前連載したそして途中で投げ出したPythonコマンドラインランチャを作ろう!シリーズも参考にしてください。Pythonカテゴリーからたどれます。

インストール

PythonwxPythonをインストールします。
あと、wxPythonのHPからは一緒にwxPython Demo for Windowsもダウンロードすると参考になっていいと思います。

Guiを作る

まずはGUIを作ります。

  • AAlist01.py
import wx

class MyTxtFrm(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id)
        self.TxtCtr = wx.TextCtrl(self, -1)
        self.LBox = wx.ListBox(self, -1)
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.TxtCtr, 0, wx.EXPAND)
        self.sizer.Add(self.LBox, 1, wx.EXPAND)
        self.SetSizer(self.sizer)
        self.SetAutoLayout(1)
        self.sizer.Fit(self)

class MyApp(wx.PySimpleApp): 
    def OnInit(self):
        self.TxtFrm = MyTxtFrm(None, -1)
        self.TxtFrm.SetSize( (180, 200) )
        self.TxtFrm.Show()
        self.TxtFrm.TxtCtr.SetFocus()
        return 1

app = MyApp()
app.MainLoop()

フレームを作り、そこにコントロールを組み込み、Show()で表示する、というのはコマンドラインランチャを作ったときと同じです。
違うのは、Sizerを使っている点です。

        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.TxtCtr, 0, wx.EXPAND)
        self.sizer.Add(self.LBox, 1, wx.EXPAND)
        self.SetSizer(self.sizer)
        self.SetAutoLayout(1)
        self.sizer.Fit(self)
  1. wx.BoxSizerのインスタンスを作り
  2. そこにAddで必要なコントロールを追加していき
  3. セットする

という順序です。
こうすると、一つのウィンドウ内に複数のコントロール(今回はTextCtrlとListBox)を入れるときに、大きさだとかを勝手に調整してくれます。

そしてできあがったのがこちら。

どっかで見たようなGuiができあがりましたね^^
次回は、実際にリストを入れてそれを選択できるようにします。