OSネイティブなGUIが構築できるPython用GUIツールキット「toga」

Toga

Pythonを使ってMac/Ubuntu/Windows/iOSなど様々な環境で動作するGUIアプリを作成することができるGUIツールキット「toga」がリリースされています(GitHubHacker 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を実行すると以下のような画面が起動します。

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と実行すると以下のウィンドウが表示されます。

First App

ボタンを押せばターミナルに「hello」と表示される超基本的なアプリです。

発展すれば便利になるかも

スクリプト言語用のGUIライブラリは意外とたくさん存在していて、例えばPython用のものとしてはwxPythonなんてもの有名です。togaがこれらと比較してどのような利点があるのか少し触ったぐらいだと判別できませんでしたが、手軽にGUIアプリが構築できるライブラリであることは確かなようです。

現段階だとドキュメントが空っぽのところがあったりするので、今後の発展に期待したいと思います。

スポンサーリンク