4 posts tagged “プログラム”
PythonCEのお勉強も、単純なことのくり返しだと飽きてくるので、GUIプログラムに挑戦。
現状、PythonCEでGUIを作るには、PythonCE用に移植されているTKinter、wxPython、Vensterの三つを利用できるようだ。
TKinterはPythonGUI作るモジュールとしては一番ポピュラーなものらしい。ならばと、まずはこちらを試したが、adesだとウィンドウがQVGAサイズで馬鹿でかく表示され、いまいち使いづらい。また、動作させるのに必要なdllをいくつか入れたら、Today表示とW-ZERO3メールのフォントが大きく表示されるという副作用が起きてしまった。
wxPythonのCE移植されたwxPyCE、こちらはPython2.5+WM5ではうまく動作すらしない。(import時にエラーが出てしまう。PyCryptoなるモノをインストールすれば動くらしいが...)
だったらと、VensterCEを試したところ、こちらは付属のDEMOがちゃんと動いた。
VensterCEは、TKinterに比べるとウィンドウひとつ表示するにもかなりコードを書かなければいけない。これはVensterがWin32APIをより直接的に操作する目的で作られているようで、コンセプトが違うのでしょうがない。逆に言えば、Win32APIに精通している人間ならば、理解は早いのかもしれない。サポートしているUIでは、TKinterでは用意されていないListViewやTreeView、タップ&ホールド時のポップメニューなどのWindowsコンポーネントが利用できるのはうれしいところ。
また、VensterCE開発プロジェクトの一貫で、WindowsMobileのPIMデータベースであるpoomを扱えるモジュールも用意されているのは魅力だ。(別にVensterCE越しに扱うわけではないようだが)
Vensterについての情報は、Pythonのモジュールの中では日が浅いようで、さほど多くはない。そのようなこともあってかVenstarCEにはチュートリアル代わりのDEMOファイルがいくつか付属している。実際動作させてみると、モーダルダイアログの表示からListview、Treeviewなど、おおよその機能のコードを網羅しているので、さほど苦労しなくても、なんとかなりそう。
また、sample扱いでPyCeIDEというpython用のエディタが付属している。
これはVenserCEで書かれたエディタで、編集中ファイルを実行できる機能などを備えたミニ開発環境である。今までエディタで編集してはファイラー(gsfinderを利用している)の関連づけを頼ってスクリプトを実行するという二度手間がしいられていただけに、PyCeIDEはかなり便利そうだ。(PWZがadesで問題なく動けばTXCマクロから実行できるんだけど、WM6だとウィンドウ表示がおかしくなったりするそうな...WZMobileのマクロパッケージの発売はどうなったんだ!?)
しかしこの、PyCeIDE。開発用に使うとして問題がないわけではない。
まずエディタ部分の日本語表示が極めて怪しい。どうもにバイト数と文字数が直結しているようで、日本語等の2バイト文字を表示させると前後に文字数分のスペースが投入されてしうまう。
そして、みかけのUIがQVGAサイズででかい。ただしVensterCE自体はVGA動作に対応している?用でポップメニュー等はVGAで動作しているぽい。一応、こちらの記事でPyCeIDEのフォントサイズ調整する方法が出ていたので、調整すれば使えなくはないのだが... この問題に関してはVensterCEの公式ページに、対応された新しいPyCeIDE ver.1.1がリリースされている。このバージョンだと、表示の問題は見事解決してる。しかし、一見問題なさそうだが、使っていくと新しく追加されたクラスビュー表示機能が動作しなかったり、一番肝心のエディタ上からのスクリプト実行が動作しないという状態に気付いた。まだまだ常用するには注意が必要そうだ。
非常に便利そうなだけにもったいない話である。なんとか使用する方法はないだろうか?実際、スクリプトコードをみてみると、そんなに長いコードではない。
となれば、答えはひとつ。きっちり動作するQVGA表示だけど動作するVenserCE付属のPyCeIDEをベースに、ver.1.1のVGA対応コードを埋め込んだ、自分用PyCeIDEを作るしかない!
まぁ、丁度漠然とPythonの文法覚えるのにも飽きてきたところなので、具体的な目的を持ってスクリプト書くいい目標ができたとおもい、がんばってみようかなw
通勤の行き帰りに先週購入した『みんなのPython』を読みながらチマチマ勉強中。
流石に電車の中で本片手にコード入力はできないので、現在はインタラクティブシェルで単純な文法の確認をしている段階。
実際にコードを書き始めて気になったのは、adesのキーボードから直接入力では"[]"や"{}"の入力出来ないこと。たしかにPythonは他の言語に比べれば記号入力は少ないものの、リストや辞書オブジェクトの定義には"[]"や"{}"を使うことになる。
WindowsMobile用の記号入力補助ツールは、MCHARを始め複数あるけれど、これらの大半は登録した記号一覧のパレットを表示して選択させる形式。これはこれで便利なのだけど、どうしても表示⇒選択⇒貼り付けと入力の手間がかかる。やはり"[]"や"{}"など、プログラム中で使用頻度が高い記号の入力は、キーボードから直接入力できたほうがよい。
何か解決方法はないかと探していたところ、こちらの記事を発見。なるほど、KeyInputEmulatorを利用するのか!
私はPQzⅡをキー割り当てツールとして常用しているので、PQzⅡのProgramタブで以下のキーバインドにKeyInputEmulatorを設定をした。
- 【バインド】 【起動パラメーター】
- Ctrl + , OBracket " [ " 用
- Ctrl + . CBracket " ] " 用
- Ctrl + Left Shift+OBracket " { " 用
- Ctrl + Right Shift+CBracket " } " 用
これでCtrlと組み合わせて上記記号が直接入力できるようになった。ちなみに、正確にはCtrlを一度押して離してから次のボタンを押す感じ。Shift + .で" > "が入力できるのと同じ。また、adesは元々Ctrl +.の同時押しにAtokの辞書登録のショートカットがバインドされているけれど、" ] "を入力したい場合は同時押しではないのでうまく回避できている。
随分コード入力が楽になった!
先日は、index.htmlを表示するところまでは出来た。
では、Pythonで書かれたCGIを実行するにはどうするか?
まずはCGI動作させたいファイル(hello.py)を用意する。
import time
print "HTTP/1.0 200 OK"
print "Server: Unknown"
print "MIME-Version: 1.0"
print "Content-Type: text/html"
print "<HTML><HEAD><TITLE>CGI TEST</TITLE>"
print "</HEAD>\n<BODY>"
print "Hello world!<BR>"
print "Local time is %s\n" % time.ctime(time.time())
print "</BODY></HTML>"
そして、/Program Files/python25/直下に"cgi-bin"という名でフォルダを作り、そこにhello.pyを配置する
/Program Files/python25/cgi-bin/hello.py
CGIが動作するのはデフォルトでは"cgi-bin"以下のみのようだ。ここは注意する必要がある。(変更する方法もあるっぽいが...)
で、先日のServer.pyを動かしている状態で、Operaよりhttp://localhost/cgi-bin/hello.pyにアクセス。
しっかりとCGIが動作しているところが確認できる。
会社の帰りに新宿ヨドバシに寄り、早速"みんなのPython"を購入。
Python書籍は他にも数冊成並んでいたので、それぞれパラパラと目は通してみたものの、"みんなのPython"が基本から応用まで一通りバランスよく触れてるっぽかったので、これを選んだ。
なかなか読み応えありそうなので楽しみだ♪
一ヶ月ほど格闘してたツールが、とりあえず一通りの機能を実装したので、HALLUCINOにて放流。
ドッキングフローターやショートカットシステム、コールバックにpluginからのmaxscript実行など、かなり新しいチャレンジをした。
中には参考になるコードすらないAPIもいくつかあって、何度も途中で挫折しそうになったけど、なんとか公開できるカタチにまとめられたことが嬉しい。
今回のツールは実際に動作させたところを見せないと利便性が伝わらないと思い、Freewareのデスクトップキャプチャツール『Wink』で作成したFlashによる動画マニュアルも付属しました。(けっこう時間かかりました。。)
Global Utility Plugins
Ghost Frames v1.00
kotenpa
kotenpa+max@gmail.com
■概要
----------------------------------
標準のゴースト表示(オニオンスキン)は、選択中のオブジェクトで現在のフレームを基準にしたフレームしか表示できません
本プラグインでは、選択していないオブジェクト、またフレームを直接してゴーストを表示できます
ゴーストの表示方法は、選択しているオブジェクトのみ、リストで指定したオブジェクト
表示フレームは、時間指定、トラックバーのキーフレーム時間より選択することができます