はじめに
前回(第2回)は仮想環境を準備してから、PythonのインタープリタでHello Worldの出力を行いました。
ちまちまテストするには都合が良いのですが、やはり毎回同じコマンドを入力しなければならないのがツラくなってきます。
BASICマガジンのソースをMSXに打ち込んで遊んだあと、データレコーダーが無いため毎回打ち直すか、電源を落とさないようにして遊んでいた頃を思い出します(笑)
そこで今回はテキストエディタを利用してソースファイルを作り、それを実行してみたいと思います。
また、前回のMessageBoxについても別の方法を試していきたいと思います。
テキストエディタのインストール
テキストエディタといっても数多く存在しどれを使っていいのか非常に悩むところです。
私は通常、K2Editorを利用しております。K2Editorは画面の分割や検索機能、また、軽快に動作するのもお気に入りのポイントです。
拡張子によって文字表示の色設定機能が用意されているのですが、標準でPython(拡張子.py)に対応していません。また、デフォルトの文字コードがShift-JIS(PythonではUTF-8で利用したい)であるので、これをきっかけに別のエディタを探してみました。
※色設定や文字コード設定をカスタマイズして対応できます。
今回見つけてきたテキストエディタは、Meryです。軽快に動作するのに高機能であります。
Vectorからダウンロードできますので32ビット版か64ビット版を選んでインストールしてください。
こちらからダウンロードできます。緑色の「ダウンロードページへ」をクリック
インストールといってもダウンロードしたMery_2.x.x.ZIPファイルを任意のフォルダに解凍するだけです。
解凍したフォルダに、Mery.exeが有りますのでこれを右クリックし「送る」「デスクトップ(ショートカットを作成)」をクリックします。
ついでに上記の「送る」にもMeryを登録しておきましょう。
Windowsキーを押しながらRキーを押します。
shell:sendto
と入力しOKボタンをクリックするとエクスプローラが起動します。
デスクトップに出来ているMeryをマウスの右ボタンを押したままエクスプローラで放します。
これでテキストエディタの準備完了です。
Meryを起動してソースを記述します。
以下のコードをコピーして貼り付けると簡単です。
msg="Hello World!こんにちは" print(msg)
ファイルメニューから名前を付けて保存をクリックし、D:\PyDev\HelloWorldを選択します。
ファイル名には、HelloWorld.py と入力して保存ボタンをクリックします。
printに色が付きました。
それでは実行してみましょう。
Windowsキーを押して、cmdと入力します。
コマンドプロンプトをクリックします。
カレントディレクトリを変更します。※下記バックスラッシュは¥の事です。
d: cd pydev\helloworld
仮想環境を有効にします。
env\Scripts\activate.bat
実行します。
python helloworld.py
うまく出力できたでしょうか?
MessageBox別の方法
まずパッケージをインストールします。次のコマンドを入力します。
python -m pip install pywin32
ENTERキー
あらら、pipのバージョンが。。。仮想環境作ると元のバージョンに戻ってしまうのですね。
アップデートしておきましょう。
python -m pip install --upgrade pip
ENTERキー
それでは先ほどのソースを修正していきます。
先頭にimport文を2つ追加し、最後にメッセージボックスを表示します。空行を加えるとソースの可読性が高まります。
import win32api import win32con msg="Hello World!こんにちは" print(msg) win32api.MessageBox(0, msg, "情報", win32con.MB_ICONINFORMATION)
上書き保存して実行してみましょう。
python helloworld.py
ENTERキー
アイコンを?にして、YESとNOボタンにするには以下のように記述します。一番最後に追加しましょう。
win32api.MessageBox(0, msg, "確認", win32con.MB_ICONQUESTION | win32con.MB_YESNO)
上書き保存して実行します。1つめのメッセージボックスでOKボタンをクリックしたら、もう一つ出てきました。
このようにMessageBoxの4番目のパラメータは、組み合わせて利用できます。
また、メッセージボックスが表示されている間は、ボタンを押すまでプログラムが待機します。
押されたボタンの情報をプログラムが受け取れるので処理を分岐させたりできます。
メッセージボックスの最後に戻り値を取得し押されたボタンに合わせて再度メッセージボックスを出力します。
今までのメッセージボックスはもう表示させたくないのでコメント(先頭に#を付ける事でプログラム処理されなくなります。)にします。また、先ほどは「はい」がデフォルトのボタンとなっていましたが、「いいえ」をデフォルトに変えます。
出来上がったソースは以下のようになります。
import win32api import win32con msg="Hello World!こんにちは" print(msg) #win32api.MessageBox(0, msg, "情報", win32con.MB_ICONINFORMATION) #win32api.MessageBox(0, msg, "確認", win32con.MB_ICONQUESTION + win32con.MB_YESNO) ret = win32api.MessageBox(0, msg, "確認", win32con.MB_ICONQUESTION | win32con.MB_YESNO | win32con.MB_DEFBUTTON2) if ret == win32con.IDYES: win32api.MessageBox(0, "はいが押されました", "情報", win32con.MB_ICONINFORMATION) else: win32api.MessageBox(0, "いいえが押されました", "情報", win32con.MB_ICONINFORMATION)
上書き保存して実行します。
「はい」ボタンをクリックすると次が表示されます。
「いいえ」ボタンをクリックすると次が表示されます。
参考MB_ICONINFORMATION等の情報は、Microsoftのサイトで確認できます。
最後に
別の日にこのソースを編集したくなったら、エクスプローラでHelloWorld.pyを右クリックして、送る>Meryを選択することで簡単に開く事ができます。
前回、今回のMessageBoxは、Window限定になりますので使い方は限られると思います。別の方法もあるので別の機会に試してみたいと思います。
今後は、GUIで画面を作ってみたり、機械学習などにも興味がありますので、徐々に知識を拡げていきたいと思います。