Pythonを使ってMac/Ubuntu/Windows/iOSなど様々な環境で動作するGUIアプリを作成することができるGUIツールキット「toga」がリリースされています(GitHub、Hacker News)。
togaの特徴はOSネイティブなGUIを構築できること。すなわち、OS XではCocoaを、UbuntuではGTK+をといった風にOSごとのネイティブなGUIライブラリを呼び出すことができるため、クロスプラットフォームのライブラリにありがちな見た目の不自然さがないことが売りのようです。
またこのプロジェクトは「BeeWare Suite」と呼ばれるPythonのIDEを含む開発環境の一部に含まれていて、ツール感での連携も考えられている様子。Python使いなら結構便利なライブラリかもしれません。
ということで早速OS Xでデスクトップ版のデモを動かしてみました。
デモ&ライブラリのインストール方法
pipが動く環境ならば簡単にインストールできます。
$ pip install toga-demo $ toga-demo
toga-demoを実行すると以下のような画面が起動します。
テーブルビュー/ツリービューが表示され、ボタンを押すとダイアログが表示されるという簡単なデモアプリが起動しました。
togaプログラミングを始めよう
まだできたてのプロジェクトなのでドキュメントが充実しているとはいえません。最初のとっかかりは公式ドキュメントにあたるしかないと思います。
特に「Your first Toga app」にはデモアプリよりさらに簡単な以下のサンプルプログラムが掲載されているので参考になると思います。
from __future__ import print_function, unicode_literals, absolute_import
import toga
def button_handler(widget):
print("hello")
if __name__ == '__main__':
app = toga.App('First App', 'org.pybee.helloworld')
container = toga.Container()
button = toga.Button('Hello world', on_press=button_handler)
container.add(button)
container.constrain(button.TOP == container.TOP + 50)
container.constrain(button.LEADING == container.LEADING + 50)
container.constrain(button.TRAILING + 50 == container.TRAILING)
container.constrain(button.BOTTOM + 50 < container.BOTTOM)
app.main_window.content = container
app.main_loop()
プログラム経験者ならばなんとなくソースコードの意味は分かるかもしれません。公式サイトに解説が掲載されているので詳しくはそちらを参照してください。これを例えばhello.pyと名前を付けて保存し、python hello.pyと実行すると以下のウィンドウが表示されます。
ボタンを押せばターミナルに「hello」と表示される超基本的なアプリです。
発展すれば便利になるかも
スクリプト言語用のGUIライブラリは意外とたくさん存在していて、例えばPython用のものとしてはwxPythonなんてもの有名です。togaがこれらと比較してどのような利点があるのか少し触ったぐらいだと判別できませんでしたが、手軽にGUIアプリが構築できるライブラリであることは確かなようです。
現段階だとドキュメントが空っぽのところがあったりするので、今後の発展に期待したいと思います。