Kivyを試してみました。
Kivyはライセンス的にも見た目的にもイケてると聞いて、簡単なGUIアプリを作りました。
2パターンの方法を使って、「Hello World」を表示させました。
今回は、基礎の基礎をメインにするため、
- Kivyの雰囲気
- 基礎的なKivyの実装方法
をつかんでいただけたらと思います。
Kivyの概要
Wikipediaによりますと、
KivyはPythonのNUI(Natural User Interface)でのマルチタッチアプリケーション開発のためのオープンソースライブラリである。
動作環境はAndroid、iOS、Linux、MacOS X、Windowsである。
ライセンス MIT (Free software)
「Kivy」『フリー百科事典 ウィキペディア日本語版』より。
2020年6月29日 (月) 20:17 UTC
URL: https://ja.wikipedia.org/wiki/Kivy
私のイメージとしては、
- tkinterと比較して見た目がモダン
- デスクトップアプリだけでなく、スマホアプリにも対応
- MITライセンスなので商用でも使いやすい
といったところでしょうか。
tkinterやその他のGUIライブラリの参考
Pythonのライブラリの特徴やライセンスなどがまとめてあります。
tkinterで簡単なプログラムを作成しました。
tkinterで複雑なGUIを作る場合に抑えておくべきWidgetの配置方法の説明です。
参考にさせていただいた記事
インストールのやり方から、サンプルプログラムまで丁寧に説明されているガイドのため、
本格的に学びたい方は、ご覧になってください。
■Pythonで作るGUIアプリ with kivy 基礎編
とても分かりやすく説明されています。感謝です。
【Python】GUIアプリを作ってみる【Kivy編】
開発環境
- OS Windows 10
- Pythonバージョン 3.7.1
- エディタ VS Code
準備 Kivyのインストール
Kivyはtkinterと異なり、ライブラリをインストールする必要があります。
依存関係のあるライブラリもインストールする必要があるため、
「User’s Guide(翻訳済み) » Installation on Windows(翻訳済み)」に従って、
下記の通りインストールしました。
1.最新のpipとwheelの確認
python -m pip install --upgrade pip wheel setuptools
⇒「Successfully installed~」がでればOK
2.依存関係のインストール
python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew
⇒「Successfully installed~」がでればOK
python -m pip install kivy.deps.gstreamer
⇒「Successfully installed~」がでればOK
3.Kivyのインストール
python -m pip install kivy
⇒「Successfully installed~」がでればOK
次はコードを書いていきます。
サンプルプログラム1 シンプルなHello World
まずは、Hello Worldを動かしてみます。
ソースコード
from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button class SampleScreen(BoxLayout): #ユーザーインタフェースを記述するクラス def __init__(self, **kwargs): #クラス初期化 super().__init__(**kwargs) self.add_widget(Button(text="Hello World")) class SampleApp(App): #アプリケーションのロジックを記述するクラス def build(self): return SampleScreen() SampleApp().run()
プログラムの流れとしては、
- ユーザインタフェースを記述するクラスを定義 5-8行目
- アプリケーションのロジックを記述するクラスを定義 10-12行目
- GUIの立ち上げ 14行目
となっています。
今回は、「Hello World」と書かれたボタンウィジェットを生成しました。
実行結果
ボタンウィジェットのため、クリックすることができます。(何も起こりませんが。)
サンプルプログラム2 Kv languageを使ったHello World
Kv language とは
Kivyでは、ユーザーインタフェース部分を、アプリケーションロジックの部分と切り離して記述することができます。
このユーザーインタフェース部分を記述するファイルをkvファイルといい、
kvファイルに記載する言語が、Kv language(kvlang、またはkivy言語)です。
※Kv languageは、Webプログラミングでのhtmlや、GUIで使用するxamlのようなイメージ。
今回は、Kv languageの細かい説明は省きますので、ソースコードで雰囲気をつかんでいただければと思います。
Kv language参考:Kivy公式HPを日本語訳したWebサイト「Kv language」
後述しますが、kvファイルは、ファイル名は間違えないように注意する必要があります。
ソースコード
from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button class SampleScreen(BoxLayout): #ユーザーインタフェースを初期化するクラス def __init__(self, **kwargs): super().__init__(**kwargs) class SampleApp(App): #アプリケーションのロジックを記述するクラス def build(self): return SampleScreen() SampleApp().run()
SampleScreen: <SampleScreen>: Button: text: "hello World 2"
ここで、
「kvファイル名は、アプリケーションのロジッククラス名のAppより前を小文字にして設定する」
ことに注意してください。
※ファイル名を間違えると、正しく実行されません。
シンプルなHello Worldとの相違点として、
SampleScreenクラスでは初期化のみを行い、ボタンウィジェットはkvファイルに記載しています。
実行結果
まとめ
Kivyを使って簡単なGUIアプリを作ることができました。
※Kv languageを使う場合/使わない場合について、プログラムを作成しました。
基礎的なプログラムだけでは、Kv languageの良さが分からなかったと思うので、
今後はもう少し複雑なGUIで試してみたいと思います。
個人的には、Hello Worldだけでも、Tkinterと比べてモダンな雰囲気を感じることができました。
最後までご覧いただきありがとうございました。