MacPython(Classic)で日本語を表示する


MacPythonについてのページ(よ)>
Last modified at 2005/8/21

プログラムで日本語を表示できるかどうかは、どうでもいいかもしれませんけど、私みたいな素人には、表示できるだけで嬉しいものです。できないこと、どうしたらできるのかを私ができた範囲ですが、書いておきます。

現在ではMacOS8.6-9.XのCarbon版のMacPythonやMac OS XのMacPythonなどがほとんどでしょうが、私の環境MacOS8.1+MacPython1.5.2-2.2でのことを書いています。すみません。

おかしいところがあるかもしれません。お気づきの点がございましたら、わたしまでご連絡いただければ幸いです


目次


PythonInterpreterのPythonInterpreter.outでの表示

Pythonを始めてまず使うのが、PythonInterpreterだと思いますが、日本語は表示できません。インライン入力はできませんが、ディスプレイ下部に変換ウィンドウが出て、確定・入力はできます。しかし、「あいうえお」と打っても、文字化けします。「print "あいうえお"」(""内は文字化けの状態です)でReturnを押しても、文字化けしたものが表示されます。

PythonInterpreterの表示

がっかりですね。

PythonIDEでの表示

MacPythonにはPythonInterpreterの他にPythonIDE(UnixやMac OS Xなどでも使えるIDLEではありません)が付属しています。エディタやデバッガの機能があって便利です。

PythonIDEの「Python Interactive」ウィンドウでの表示

PythonIDEを起動して、「Python Intaeractive」に先程と同じように打ち込んでみました。インライン入力はできませんが、ディスプレイ下部に変換ウィンドウが出て、確定・入力はできます。
打ち込んだ後、入力を「U.S.」に戻してからReturnキーを押しました。

PythonIDEに打ち込む1

「print "あいうえお"」を打ち込んでみました。打ち込んだ後、入力を「U.S.」に戻してからReturnキーを押しました。この入力の「ことえり」と「U.S.」で切り替えが面倒です。

PythonIDEに打ち込む2

やはり文字化けしてしまいました。

しかし、ここで「Python Interactive」ウィンドウの右上にある三角形のポップアップメニューから「Font settings...」を選び、日本語フォントを選択します。「Osaka-等幅」を選びましたが、ここでも文字化けしています。「Size」は「12」にしました。「Done」ボタンを押します。

Font settings...ウィンドウ

すると、先程のウィンドウが日本語フォントで表示されます。

PythonIDEに打ち込む3

このフォント設定だと、以後の実行で日本語が表示できます。

PythonIDEに打ち込む4

PythonIDEのエディタウィンドウでの実行

PythonIDEにはエディタの機能もあります。「File」メニューから「New」を選ぶと「Untitled Script 1」というタイトルのスクリプトウィンドウが現れます。

スクリプトウィンドウ1

スクリプトウィンドウの右上にもポップアップメニューに「Font settings...」があるので、「Osaka-等幅」を選びました。
そこで先程のように打ち込んでみます。

スクリプトウィンドウ2

スクリプトウィンドウの左上にある「Run all」ボタンを押すと、スクリプトの内容を実行してくれます。
押してみると、「Output」ウィンドウが現れて、以下のように表示されます。

Outputウィンドウ1

また文字化けしてます。
しかし、Outputウィンドウにも右上にもポップアップメニューに「Font settings...」があるので、「Osaka-等幅」を選びました。すると。。。

Outputウィンドウ2

日本語で表示されました。

以後、スクリプトを「Run all」で実行すると、日本語で表示されます。

Outputウィンドウ3

注意

ここで作成した「Untitled Script 1」をPythonIDEの「File」メニューの「Save as Applet...」で保存してアプレットにしてみます。できたアプレットをFinder上でダブルクリックで実行すると、PythonInterpreterが起動して以下のように表示されます。

アプレットで実行

また、「Untitled Script 1」をPythonInterpreterにドロップしても同じです。
PythonInterpreterで実行することになるので、日本語で表示できません。
残念。。。

ただ表示するだけならEasyDialogs.Message

ユーザに日本語で表示するだけなら、EasyDialogs.Message()が楽かもしれません。

以下のスクリプトファイルを日本語入力可能なエディタで作ります。PythonIDEのスクリプトウィンドウでもかまいません。

import EasyDialogs
EasyDialogs.Message("あいうえお")

PythonIDEのスクリプトウィンドウで作成した場合はスクリプトウィンドウの右上のポップアップメニューから「Save options...」を選ぶと、以下のウィンドウが出ます。

PythonIDEのクリエータの設定

ここで「Python Interpreter」のラジオボタンを選んで「Done」を押します。その後、このスクリプトを保存すると、このスクリプトのクリエータを'Pyth'に設定してくれるので、Finderからこのスクリプトをダブルクリックすると、PythonInterpreterで実行してくれます。

SimpleTextなどで作成した場合はファイルをPythonInterpreterにドロップして実行できます。ファイルのダブルクリックで実行したいなら、FinderPopの「ファイルタイプ設定」、あるいはResEditでクリエータを'Pyth'に設定すると、ダブルクリックで実行できます。

実行すると以下のように表示されます。

EasyDialogs.Messageの実行

EasyDialogsのMessageやAskYesNoCancelはこのように日本語で表示できます。

PythonIDEのOutputを利用したスクリプトで表示

それでも、やはりMac風のウィンドウに表示したい、PythonIDEのOutputウィンドウに表示できるんだから表示したい、という方は、拙作のLightOutputWinをお使い下されば幸いです。

LightOutputWinは、PythonIDEからOutputウィンドウだけを持ってきた(パクってきた)ものです。LightOutputWin.pyをアプレットにして、スクリプトファイルをこのアプレットにドロップするとスクリプトのprint(sys.stdout)をウィンドウに表示します。また、「File」メニューの「Open...」でスクリプトを選んで実行できます。MyApp.pyを使って、単純に実行しています。

先程のスクリプトファイル「print "あいうえお"」を実行すると以下のようになります。もちろん、Outputウィンドウ右上のフォント設定を日本語フォントにしていないといけません。

LightOutputWinによる実行

エディタmiPythonモードのツールとしてLightOutputWinを使うこともできます。

これでmiのPythonモードでツールメニューから「LightOutputWinで実行」を選ぶと、作成中のスクリプトのprintの結果を表示できます。

その他の方法

以上の他にも、Wウィジェットを使ったり、リソースでウィンドウを作ったりなど、方法はあると思います。日本語に言及していませんが、WウィジェットやDlgリソースを使って表示する話はPython(MyApp) で Mac アプリケーションを作るに少し書きました。第9、10回あたりに。。。

もう一つ注意

以上の話はただ単に「日本語を表示する」という話です。ですから、日本語での文字列の操作はそのままではできません。
例えばPythonIDEで「Python Intaractive」ウィンドウを日本語フォントに設定していても...

文字列の長さ/スライス

文字列の長さやスライスは日本語フォントでのもの(長さ4)になりません。このへんのことはよく知らないのですが、MacPython1.6以降ならユニコードとJapaneseCodecsを使うとできるようです。(Python日本ユーザ会の「日本語環境でのPython」をお読み下さい。)

ユニコードとJapaneseCodecを使う

でも、ユニコードにするとそのままでは表示できません。

ユニコードをそのまま表示する

エンコードしなければなりません。

エンコードして表示
MacPythonについてのページ(よ)へもどる