wxPythonに入門する

久しぶりにゲームでも作ろうかと思い立ち、GUIを触る事にした。
そうだ、最近ブクマされてたOpenGLの基礎があったなー。と、これをやろうとしたのだが、rubygemsのよくわからない挙動に悩まされ、Ruby+OPENGLを諦めた。諦めたというか後回し。

というわけで、wxPythonをやりかけていたので、再度こちらを頑張ってみることにする。

wxPythonとは

pythonGUIアプリケーションを作成するためのライブラリ
最近のPythonには標準で組み込まれている。import wxすれば使用できる。
id:showyouさんのtwitterクライアントcrochetでも使われているらしい。

リファレンスやチュートリアルに関してはここがまとまっていた。
メモ - ロボ娘と百合とSTG

使ってみる

http://zetcode.com/wxpython/firststeps/ を見ながら試す

MyFirstApp.py

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

import wx
app = wx.App()
frame = wx.Frame(None, -1, u'Hello '+u'ハロー!')
frame.Show()
app.MainLoop()

ちゃんとu("マルチバイト文字")とすれば日本語も動くようだ 他のPythonライブラリと違い、#coding:utf-8にしていしても、明示的にマルチバイト指定しないと動かない。

少し弄ってみた

ウィンドウサイズの設定から

#!/usr/bin/python
#coding:utf-8
import wx

WINDOW_POS_X=100
WINDOW_POS_Y=100

class Size(wx.Frame):
  def __init__(self, parent, id, title,width,height):
    wx.Frame.__init__(self, parent, id, title, pos=(WINDOW_POS_X,WINDOW_POS_Y),size=(width, height))
    self.Show(True)

app = wx.App()
root=[]
for i in range(5):
  root.append(Size(None, -1, 'Size',300-30*i,200-20*i))
app.MainLoop()

動かしてみるとしょうもないけど、動きました。


id:showyouさん(@showyou)にTwitterで訪ねたのだが、「wxPythonは途中から茨の道」「どのライブラリにしてもだが、凝った事すると途端に仕様を読まなければいけなくなる」とのこと。少しずつ頑張ろうと思います。