【Python】GUIアプリを作ってみる【Kivy編】※初心者向け


管理人
pythonのGUIライブラリ、
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ライセンスなので商用でも使いやすい

といったところでしょうか。

piyo
ナウくて使いやすいライブラリのようですね

tkinterやその他のGUIライブラリの参考

【Python】GUIライブラリ13個を比較【初心者へのオススメあり】
 Pythonのライブラリの特徴やライセンスなどがまとめてあります。
【Python】GUIを試してみた【tkinter編】
 tkinterで簡単なプログラムを作成しました。
【Python】tkinterのWidgetの配置方法【サンプルプログラムで解説】
 tkinterで複雑なGUIを作る場合に抑えておくべきWidgetの配置方法の説明です。

参考にさせていただいた記事

Kivy公式HPを日本語訳したWebサイト

インストールのやり方から、サンプルプログラムまで丁寧に説明されているガイドのため、
本格的に学びたい方は、ご覧になってください。

 

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()

プログラムの流れとしては、

  1. ユーザインタフェースを記述するクラスを定義 5-8行目
  2. アプリケーションのロジックを記述するクラスを定義 10-12行目
  3. 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と比べてモダンな雰囲気を感じることができました。

 

最後までご覧いただきありがとうございました。