ひと通り拙訳「Wウィジェットを使う」を読んでおいていただけると、いいなと思います。
それを読んだ方はお分かりでしょうけど、Wウィジェットを使うので、EditPythonPrefs で sys.path に「$(PYTHON):Mac:Tools:IDE」の行を加えといて下さい。
「Wウィジェットを使う」に出てくる MyApp.py とMyApp.rsrc が必要です。ここをクリックしてダウンロードして下さい(約30k)。この MyApp.py とMyApp.rsrc は私が少し書き換えたもので、「MyApp.pyでMacアプリを作る」にあるのと同じものです。
ダウンロードしたものを解凍すると、下図のようになります。
この中の MyApp.py や MyApp.rsrc を書き換えたり、新たにモジュールファイルを追加したりして作っていきます。
プログラムを記述するためにテキストエディタが必要です。SimpleTextでも可能ですが、インデントが表示できたり、文字列の検索や置換などができるので、テキストエディタを使うのがいいと思います。私はフリーソフトの mi を使っています。Python の記述に便利な mi 用の Pythonモードを作りましたので、よろしければお使い下さい。
MacPython 付属の PythonIDE を使用してもいいのですが、MyApp.pyを開いて「Run」ボタンで実行するとエラーになります。MyApp.pyを実行するには、MyApp.pyをダブルクリックするか(クリエータは 'Pyth' になっています)、PythonInterpreterにドロップします。
テキストボックスとボタンだけの簡単なウィンドウを表示して、テキストボックスに文字を入力してボタンを押すと、テキストを話す、というものを作ることにします。
こんなものが私の頭の中で想像されています。
なお、話すように動作させるには SpeechManager が必要です。コントロールパネルに「Speech」があって、それを起動できるのであれば(MacOS8以上?)大丈夫だと思います。
プログラムを実行させて確認しながら、少しずつ書いていきます。まず、アプリケーションを起動すると上のようなウィンドウが表示されるというふうにしたいので、MyApp.py をエディタで開いて、以下を変更します。
MyApp.py 変更前:99-104行目:
#main routine here -------------Yoshimura #2001/5/23 #import xx #main = xx.main(self) # Process some events! self.mainloop()
MyApp.py の他の部分はアプリケーションの骨組みで、ほとんどメニュー関係を扱う関数です。
MyApp.py を起動すると上の部分を実行してメインループに入るようです。それで、上の部分にウィンドウを出す、ということを書きます。
変更後:99-104行目:
#main routine here -------------Yoshimura #2001/5/23 import speakwin self.main = speakwin.Win() # Process some events! self.mainloop()
とりあえず、『speakwin モジュールをインポートして、その中の Win クラスのインスタンスを作って self.main に代入する』というふうにしました。この spaekwin モジュールをこれから作っていきます。spaekwin モジュールに書く Win クラスは Wウィジェットの Window クラスを継承して作ることになるんだと思います。Win クラスのインスタンスが作られるとウィンドウを表示する、つまり __init__ メソッドでウィンドウを表示するとこまでやろうかな、と考えて、こういうふうにしました。