特集
» 2009年01月09日 02時30分 UPDATE

Python MANIAX:EasyGuiを用いたPythonスクリプトの簡易GUI化 (1/3)

Google App EngineなどにPythonの可能性を感じるあなた。でも、Pythonスクリプトにグラフィカルインタフェースを実装するのは少々やっかいだ。本稿で紹介するEasyGuiを使えば、初心者でもPythonスクリプトをGUI化できるのだ。

[ Dmitri Popov,SourceForge.JP Magazine]
SourceForge.JP Magazine

 Pythonスクリプトにグラフィカルインタフェースを実装する場合の選択肢としては、多少煩雑になるのは覚悟の上でTKinterなどのGUIプログラミングキットを用いるのが一般的だろう。ただしこの手法を実践するにはかなり高度なコーディングスキルが求められるため、初心者レベルのPythonプログラマーにとってはハードルが高いというのが実状である。こうした面倒なコーディングを経ることなく、Pythonスクリプトへの簡易的なGUI機能の組み込みを可能にしてくれるのが、本稿で紹介するEasyGuiというモジュールだ。実際EasyGuiを利用した場合、数行のコードを追加するだけでPythonスクリプトをグラフィカル化できてしまうのである。

 EasyGuiの能力を実感する最善の方法は、これを用いて手元にある既存のPythonスクリプトを改良してみることだ。本稿ではそのためのベースとして、メモ類、URLの控え、行動予定リストなどのパーソナルデータ管理用にわたしが作成したPygmynoteという簡易管理ツールを使用することにする。オリジナル状態のPygmynoteでもそれほど使い勝手が悪い訳ではないが、ここではレコード抽出操作を簡単化するために、幾つかのテキスト入力ボックスとダイアログを追加してみることにしよう。

 スクリプトの改良作業に着手するに当たっては、事前にEasyGuiをインストールしておかなくてはならない。まずは同モジュールの最新リリースをダウンロードし、アーカイブを展開して得られるeasygui.pyファイルを/usr/lib/python2.5/site-packagesディレクトリに移動しておく。そしてこのモジュールを利用するスクリプトについては、その先頭部に「from easygui import *」というインポート行を追加しておかなくてはならない。以上の準備が完了すると、EasyGuiを用いたスクリプトの改造が行えるようになっているはずだ。

 まずは手始めに“Pygmynote is ready. Pile up!”というユーザー歓迎用のメッセージ部を、もう少し見栄えのするメッセージボックスに置き換えてみよう。こうした機能を追加してくれるのがEasyGuiのmsgbox関数だが、この関数を使用する最低限のパラメータ指定としては、後記のサンプルコードのようにメッセージ表示用のテキストだけを指定しておけばいい。


msgbox("Pygmynote is ready.")

 そのほかにもこの関数では、メッセージボックスのタイトル、ボタンのラベル(デフォルト値は“OK”)、イメージ表示用の画像という3つのパラメータを指定できる。例えばメッセージボックスに彩りを加えたければ、最終パラメータを介して適切なgifイメージを表示させればいいはずだ。後記のサンプルコードでは、msgbox関数にて使用可能なすべてのパラメータを指定している。


image = "pygmynote.gif"
msgbox("Pygmynote is ready.", "Pygmynote", ok_button="Pile up!", image=image)

 次に、Pygmynote操作用のコマンド群を扱いやすくするため、使用可能なコマンドを一覧したメニューを表示させてみよう。このメニューを追加した場合のコマンド指定は、リスト上での項目選択後にOKをクリックするか、目的のコマンドを直接ダブルクリックすることで行えるようになるのだ。こうした処理を可能にしてくれるのがEasyGuiに用意されたchoicebox関数で、ここでも先のmsgbox関数と同様のパラメータを指定可能だが、この場合に指定すべき内容は、メッセージ用のテキスト、ウインドウのタイトル、選択項目のリストという3つである。


msg ="What's your favorite fruit?"
title = "Fruity"
choices = ["Apple", "Apricot", "Pineapple"]
choice = choicebox(msg, title, choices)

 このメニューの実装後、リストに一覧された中から目的のコマンドを選択してOKをクリックする(あるいは当該コマンドを直接ダブルクリックする)と、関数の戻り値として選択された項目名が返される。ただし先に述べた用途にこのchoicebox関数を使うには、Pygmynoteというスクリプトで使用可能なコマンドを一覧したリストを、後記のような形式でパラメータ指定しなくてはならない。


msg ="Select command and press OK"
title = "Pygmynote"
choices = ["Help", "Insert new record", "Show all records", "Quit"]
command = choicebox(msg, title, choices)

 またその後実行する条件分岐のブロックではcommand=="n"がcommand=="Insert new record"となるなど、choiceboxに渡した項目名とコマンド名とを一致させるための置き換えを施さなくてはならない。そのほか、このスクリプトを現状のままで実行するとリスト上の項目はアルファベット順でソートされるはずだが、この種の並び順については“Insert new recordは最初の項目にしたい”などの要望が出てくることだろう。実のところEasyGuiはソート順のカスタマイズ機能を実装していないのだが、その単純な回避策としては“1 - Insert new record”や“X - Quit”のように、項目名の先頭に強制ソート用の記号をつけておけばいいはずだ。

       1|2|3 次のページへ

Copyright © 2010 OSDN Corporation, All Rights Reserved.

Loading

ピックアップコンテンツ

- PR -

注目のテーマ

マーケット解説

- PR -