wxGladeを使ってみる

Tutorial( http://wxglade.sourceforge.net/tutorial.php)を実行しながらメモ。
・tutorialにそってやっているけど翻訳ではないので正確なことは上記URLを参照
・TigarではうまくうごかなかったのでWIndows XPでテスト
・GUIエディタで(今のところ)IDEではない。そこかわり、動作は軽い

1)まずFrameを作る:wxの基本
--パレット左上のフレームボタンをクリック ():


2)フレームにメニューバーを付けてみる
プロパティウインドウのWidgetタブを開き、Has MenuBar にチェックをいれる。
Edit menusボタンをクリックしてメニューを追加していく。”>”ボタンをクリックしてインデントするとサブメニューになる。

3)ステータスバーをつけてみる
メニューバーを付けたときにプロパティ画面が別のものに飛んでいってしまうが慌てない。
Treeウインドウのframe_1をクリックするとframe_1のプロパティが見えるようになる
MenuBarを付けたときと同様にして”Has StatusBar”にチェックボックスを付ける
ダブルクリックしてフィールドの内容を編集、Applyボタンを忘れない事。

4)ノートブックを付けてみる
wxGlade ではsub-widgetsを持たせるためにはすべてのコンテナに Sizerが必要になるので今作ったフレームには自動的に BoxSizer ()が付いているはず。他の部分には自動では付かない。
パレットのNotebook ボタンを () クリックし、Sizer内の適当な場所(斜線が引かれている)をクリックする。ノートブックのタブをどちらに付けるかを聞いてくるウインドウがでてくるので、好きなものを選んでOKをクリック。
Common タブを選択、 Class プロパティはwxNotebookなので MyNotebookに変えてみる。カスタムクラスとしてコードが吐き出される。
NOTE:"container以外のときには動作が違う。たとえばボタンのときに. wxButton をMyCustomButtonに変更したとすると, wxGladeはMyCustomButton というwxButton のサブクラスがどこかに定義されていると仮定して次のようなコードを生成する。
クラス名を変更しない場合:button_1 = wxButton(parent, id, "Label")
クラス名を変更した場合:button_1 = MyCustomButton(parent, id, "Label")

NOTE 2: XRC形式での出力:(省略)
5)ページの追加
notebookのTabsプロパティで追加・削除・編集。
Applyをクリックして確定。
6)そのほかいくつかののコントロールをつけてみる
notebookの最初のページにテキストエリアとボタンを2つ配置するためにまずはsizerを設定する。パレットの BoxSizer ボタン () をクリックしてnotebookのページの適当な部分をクリックするとsizerが追加される。縦方向に2分割したsizerが欲しいので、Verticalを選び、数値を2にしておく。
方向と分割数は後から変えることもできる。方向はsizer のClassプロパティを変更すれば良い(選択肢が出てくる)。数を増やしたいときはツリーウインドウで変更したいsizerを右クリックしてAddすればよい。数を減らす場合は消す場所を間違えないようにして消す。危なそうならそのままにしておいてもあまり害はなさそう。

6.1 テキストエリア
パネルの TextCtrlボタン () をクリックし、sizerの最初の領域に配置。
複数行のテキストを書けるようにするためにはTextCtrlのプロパティのWidgetタブでwxTE_MULTILINE をチェック。wxEXPANDをチェック。
set to 1 the value of Optionと書いてあるけどOptionが見つからない。
6.2 ボタン
2番目の領域に水平に3分割したコンテナを配置。3分割するのは、真ん中にスペースをあけてボタンがくっつきすぎないようにするため。
パレットのボタン()選択して左端の領域に配置。2つめのボタンはコピペで作成してみる。配置したボタンを右クリックしてコピー、右は時の領域にカーソルを動かして右クリックしてペースト。
真ん中の領域には同様にしてスペーサー () を配置。
ボタンを置いたSizerのwxEXPANDのチェックをはずし、wxALIGN_CENTER_HORIZONTALをチェックしておく。ボタンとテキストエリアやウインドウの端に間隔を空けたい場合はwxTOPとかwxBOTTOMのに適当な値(チートリアルでは4)をいれておけばよい。
set to 0 the value of "Option",と書いてあるのだけど、やっぱり"Option"というのはみつからない。。。

NOTE としてIDの話が書いてあるけど(略)

7) 最後の調整

ボタンの位置テキストエリアの上に変えたい場合、ボタンを置いたsizer のPos プロパティの数値を0にすれば良い 。
他の大きさも変えたいならかえればよい。

8)コードの生成
まずはセーブしておく事。(wxGladeはまだ安定とは言い切れないので、データが消えるかもしれないと書いてある)
ツリーウインドウの Application をクリックするといくつかの設定項目があるので適切に設定して(デフォルトでも多分大丈夫?)、生成するPythonのファイル名を入力してGenerate codeボタンをクリック。

9) Notesも付いていたけど、(略)


======
このままでは何もしない窓だけなのでボタンにアプリを終了させるコマンドだけ割り振ってみる。
ボタンのEVENTタブを開いて、適当な名前たとえば、EXITを入力。
コードを生成させると、
def EXIT(self, event): # wxGlade: MyNotebook.<event_handler>
print "Event handler `EXIT' not implemented"
event.Skip()
となっているので、2行目を
sys.exit()
と書き換える。