2009年2月17日火曜日

PyQt4アプリにてscimで日本語入力

CherryPyの本が未だに届かないので、少しPyQt4を触ってみた。
PyQt4はC++で書かれたアプリケーション開発フレームワークであるQtのPythonラッパーだ。ちなみに開発元はTrolltechという会社だったが、Nokiaに買収されて社名が変わったらしい。アプリ開発用フレームワークと言っても、個人的にはGUIライブラリとしてしか認識していない。
さらに、Pythonのようなスクリプト言語で使えなければ触る気にはならないと思う。つまり目的はPythonでGUIを作ってみる事だ。

さて、環境は Debian GNU/Linux lennyで、Python2.5.2&PyQt4。
Python2.5.2ではユニコードを使えば日本語文字列も正規表現などでもちゃんと扱え、PyQt4のウィジェットにも表示できる。
早速二三サンプルを試してみたところ、ちゃんと日本語も表示できた。
しかし、日本語入力ができない。
普段Emacsの外のX環境で使っているのはscim-skkだが、ktermやFirefoxでは普通に日本語入力できているが、PyQt4アプリの上では入力できない。
ネット上を漁りながら適当に試していたところ、やっと入力できるようになった。

まず、 scim-bridge-client-qt4 というパッケージを入れる。
そして環境変数を QT_IM_MODULE=scim-bridge としておけば良いらしい。
もちろんscim自体のための環境変数設定 XMODIFIERS="@im=scim" はそのまま。

ということで日本語入力できるようになった。
考えてみたらまともなGUIアプリなんてMS-Windows上でVisual C++でちょっと書いてみた事があるだけで、Linux上では作っていない。はるか昔に、Sunのワークステーションでだったが、Xlib&Xtで作ろうとしてあまりの面倒くささにウンザリして止めたっけ...
せっかく良いライブラリが、しかもPythonから使えるので、一通りの事はできるようになっておきたい。

しかし日本語入力回りの仕組みはいまだに良く分からない。今回もscimとbridgeはどういう関係なのかピンと来ない。大抵はこんな感じで設定さえなんとかすれば使えるようになるので、いつまでもブラックボックスのまま。
まあ、何もかも知ろうとする訳にはいかないし、仕方ないか。。。

0 件のコメント: