読者です 読者をやめる 読者になる 読者になる

積極的にメモっていく姿勢

題名詐欺。更新頻度の低さが売り。

EasyGuiを触ってみる

python gui mac

友人が「pythonで簡単にGUI触れるのない?」って言うから、昔調べたんですけど、ブラウザにそのページのタブが残っていたので、触ってみました。

そんな友人向けに、EasyGuiというモジュールがあるそうです。

Python MANIAX:EasyGuiを用いたPythonスクリプトの簡易GUI化 (1/3) - ITmedia エンタープライズ

ここを参考にして、どんなものなのか見ていきたいと思います。

ちなみに、今回実践する環境は、

Mac OS X Mountain Lion 64bit
Python 2.7

こんな感じです。

ちなみに、MacOSでカーネルのビット数を調べるには、

getconf LONG_BIT

とやってやれば、出てくるようです。

今回触れるEasyGuiは、あまりOSの差はないかと思います。

それでは、実際に動作させて行きましょう。

1.準備

まずは、準備です。EasyGuiをダウンロードします。

easygui - Browse /0.96 at SourceForge.net

次に、今回の環境では Python 2.7 なので、

/Library/Python/2.7/site-packages

にダウンロードしてきた、easygui.pyをコピーするだけいいみたい。

確認を行うには、pythonインタプリタを起動して、

>>> from easygui import *

と打って、何事もなく >>> と出れば問題なし。
準備完了です。

何か出た場合は、easyguiを発見できてない可能性があります。

その場合、easyguiのある所のpathを確認しましょう。
sys.pathにその場所がない場合は、追加しましょう。

2.それっぽく触る

>>> msgbox("hello python!")

と打ち込んでみましょう。


こんな感じで、アラートみたいなものが出たと思います。

入門完了ですね!

さすがに、他にもやってみないとアレですね。

msgbox("hello python!", "easygui", ok_button="Bye!", image="./image.jpg")

今回は、指定できる引数をすべて指定しました。

一番目の引数から順に、

メッセージテキスト
タイトル
ボタンに表示するテキスト
表示する画像

となっているようです。

【悲劇】画像が表示されなかった

きっと、PILが足りませんみたいなことを言われたと思います。

sudo easy_install PIL

とするか、

Python Imaging Library (PIL)

ここから、ダウンロードしてインストールしましょう。

なんて、軽い気持ちでやってみたら、ダメでした。
心折れるー(´⊇`)

しかたないので、画像を無視して触ってみました。(悲しみ

msgbox("hello python!", "easygui", ok_button="Bye!")

きっと色々と変わったと思います。

3.選択肢あるやつ

切り替えは大切ですね!
早速、別のものにも触れてみましょう。

msg = u"あなたは何のプロ?"
title = u"質問"
choices = ["C++", "Python", "Coq", "ChacK"]

choice = choicebox(msg, title, choices)
print choice
【悲劇】おのれ日本語

File "test.py", line 4
SyntaxError: Non-ASCII character '\xe3' in file test.py on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

shell returned 1

日本語では出てくれなかったです(´д `)
ちゃんと設定とかすれば出るんでしょうが、今回はあきらめです。

英語にして実行したのがこちら。

また、choiceboxは選ばれたものを返してくれるようです。

4.入力させてください

いやいや、こんなことで心折れてはなりません。
入力を受け取るものを触ってみましょう。

msg="Omae Ha Nanimono Da ?"
title = "Toi"
fieldStrings = ["Watashi Ha","Nenrei Ha","Seibetu Ha","Syumi Ha"]
fieldValues = []
fieldValues = multenterbox(msg, title, fieldStrings)

for v in fieldValues:
  print v

もはや意地の領域で、ローマ字日本語。諦めない心 (イミフ

これが出てきた。

ソース見てお分かりの通り、multenterboxはリストにして入力されたものを返してくれるみたいです。これはすごいと思う。

あ、なんか日本語打てない。ど、どうしよう......
今回はスルー決め込みましょう。

5.(´д `)

さらっと触ってみようかな☆
という気持ちであったのですが、画像と日本語にやられてしまってさあ大変。どじょうがでてきて(ry

しかし、今回紹介したもの意外にも y/n を訊いてくれる ynbox() や、Continueするかどうか訊いてくるccbox()、普通にtextbox()なんていうものもあるそうです。

何かGUIでやってみたいことがある人は、まじめに勉強してみるといいと思います。ちょっとしたものづくりなら十分なモジュールではないでしょうか。