macでwxglade
Mac OS X 10.6.6
wxWidgesをやろうと思い立ち wxWidgets本体およびwxPythonとwxGladeをインストールする
wxWidgetsはソースを落としてきて
% arch_flags="-arch i386" % mkdir macbuild % cd macbuild % ../configure --with-opengl --enable-geometry --enable-graphics_ctx --enable-sound --with-sdl --enable-mediactrl --enable-std_string --enable-display --enable-monolithic --enable-unicode --enable-odbc CFLAGS="$arch_flags" CXXFLAGS="$arch_flags" CPPFLAGS="$arch_flags" LDFLAGS="$arch_flags" OBJCFLAGS="$arch_flags" OBJCXXFLAGS="$arch_flags"
でよく (参照 Development: wxMac - WxWiki)
また wxPythonはバイナリパッケージがある
問題はwxGladeで 単にソースを落としてきて実行しても まず
%python wxglade ImportError: /usr/local/lib/wxPython-unicode-2.8.11.0/lib/python2.6/site-packages/wx-2.8-mac-unicode/wx/_core_.so: no appropriate 64-bit architecture (see "man python" for running in 32-bit mode)
と怒られ さればとて
% export VERSIONER_PYTHON_PREFER_32_BIT=yes
とやっても
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
が出て悲しくなるだけだ
解決は
/usr/lib/python2.6/site-package/sitecustomize.py
というファイルをつくって
import sys sys.setdefaultencoding('utf-8')
と画像のように書くとうまくいく
スタートアップファイルにこれを書いてもだめで 実際dir(sys)してもsetdefaultencodingなんて出てこない
[Python] UnicodeEncodeErrorが発生した場合は、sitecustomize.pyでデフォルトのエンコーディングを指定する。 - SumiTomohikoの日記
によると
これは、pythonは起動が終了したら、sysモジュールからsetdefaultencoding関数を削除するためです。
ここで、pythonの起動時の処理を、少し詳しく説明します。pythonは起動時に、モジュールの検索パスを設定し、siteモジュールを読み込みます。Ubuntuなら、/usr/lib/python2.4/site.pyになります。sitecustomizeモジュールも、このsite.pyから読み込まれています。
以下興味深い説明が続く
これでwxGladeによるGUIアプリ作成にかかれる
windowsやlinuxでは見慣れたwxGladeの画面がmacっぽいルックアンドフィールになっていて面白い
たまに一部反応しなくなったりバグっぽい挙動もある