tediousdays’ blog

プログラミングに関するブログです

Hello, world.

今日からプログラミングに関する記事を書いていきます。
対象言語は C, C++, Python を予定していますが、 当面は PythonKivyライブラリを中心に据えようと思います。




Kivy は Pythonオープンソースライブラリで、マルチタッチGUIを作るためのものです。
Linux, MacOS, Windows などの主なデスクトップOSで開発が可能です。
またこれらのOSはもちろんのこと、Android OS や iOS 向けにアプリをビルドすることもできます。

公式サイトはここです。


早速 'Hello, world.' から。

from kivy.app import App
from kivy.uix.button import Button

class helloApp(App):
    def build(self):
        return Button(text='Hello, world.')

helloApp().run()

f:id:tediousdays:20180506064948p:plain

このように基本クラスである App クラスのサブクラスを定義し (ここでは helloApp)、そのオブジェクトを生成して run メソッドを走らせるとアプリが起動します。


Kivy のGUI構成のポイントは、ウィジェットツリーを構築することにあります。


ウィジェットツリーとは、ウィジェット (ボタンやラベルなどGUIの部品です) 同士の親子関係から定められる根付き木 (rooted tree, 詳しくはググってください) です。その根に相当するウィジェットルートウィジェットといい、Appクラス (のサブクラス) の build メソッドではルートウィジェットを返すことが求められます。

上記のコードでは、

    def build(self):
        return Button(text='Hello, world.')

となっていますので、Button オブジェクトがルートウィジェットとなるのです。(かつ、ウィジェットツリーはこの Button オブジェクトのみから成る。)

当然、ウィジェット1つでは面白くも何ともありません。
そこで複数のウィジェットを規則的に配置するレイアウトや、
複数のスクリーンを切り替えるためのスクリーンマネージャ
ウィジェットツリーに組み込んで使っていくことになるのですが、
これはまた次回の記事で書きたいと思います。