Python3 GUIライブラリkivy をMacにインストールし、Hello, Worldを表示させる方法

PythonではGUIアプリケーションを開発することもできます。
Python使われるGUIライブラリは多数ありますが、その中でももっともよく使われているのが「kivy」です。

Python3 GUIライブラリkivy をインストールし、「Hello, World」と表示される簡単なサンプルコードを紹介します。

hello_py

環境

  • Python 3.6.2

kivyとは?

Screenshot of kivy.org

kivyとは、PythonのGUIアプリケーションを開発するためのライブラリです。
Pythonでは最もの人気あるGUIライブラリとなっています。

Windows、Mac、Linux以外では、Android、iOSでも動作する点です。
既にスマホアプリが多数作られ、ゲームの作成にも向いています。

一番人気のおすすめGUIライブラリKivy

PythonのGUIライブラリの人気度をGoogleのツール「Googleトレンド」で比較しました。
対象地域は日本だけでなく世界です。このグラフを見ると、Kivyが飛び抜けて人気があることがわかります。

Kivy ドキュメント日本語訳

Kivy ドキュメントの日本語訳ページがあるので、ここから学びましょう。

Kivy公式ドキュメント(日本語訳ページ)

Kivyの本

数は少ないのですが、いくつかKivyの本は出版されています。


「Kivy」ではじめるPythonプログラミング―グラフィックライブラリでアニメーションを表現! (I・O BOOKS)

Creating Apps in Kivy2


PythonでかんたんiOSアプリプログラミング―Kivyによるマルチタッチアプリケーション制作

「venv」でPythonの仮想環境を準備する

Pythonの仮想環境を準備し実行する方法を紹介します。
Pythonの仮想環境を準備する方法は複数ありますが、バージョン 3.6以降で推奨されている「venv」で構築します。

参考:Pythonの仮想環境 venv

iTerm2もしくは、ターミナルを起動

iTerm2もしくは、ターミナルを起動します。

仮想環境の準備

mkdir」コマンドで「my_kivy」というディレクリを作成します。

mkdir my_kivy

作成したディレクリに「cd」コマンドで移動します。

cd my_kivy

仮想環境の作成

フォルダの中にPython仮想環境を作成します。「python -m venv env」コマンドを実行します。
コマンド実行後時間がかかることがあるので待ちます。

python -m venv env

仮想環境の有効化

以下のコマンドを実行し、Python仮想環境を有効化します。

source env/bin/activate
(env) [マシン名]:my_kivy [ユーザ名]$

仮想環境が有効 にプロンプトの先頭が「(env)」と表示されます。

Macにkivyをインストールする方法

Homebrewをインストール

パッケージ管理ツールHomebrewを使います。導入していない場合は、
Macにパッケージ管理ツール Homebrewをインストールする方法」を参考にしてください。

kivyをインストール

Homebrewで以下コマンドを実行します。

brew install pkg-config sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer

Pythonのパッケージ管理ツール「pip」でCythonをインストールします。

pip install -I Cython==0.23

「USE_OSX_FRAMEWORKS = 0 」に設定します。

USE_OSX_FRAMEWORKS=0 pip install kivy
Kivyがインストールされているか確認するには以下のコマンドを実行します。
pip search Kivy

サンプルコード

hello.py


from kivy.app import App
from kivy.uix.label import Label

class HelloKivy(App):
    def build(self):
        return Label(text="Hello, World!")

if __name__ == "__main__":
    HelloKivy().run()

プログラムを実行します。

python hello.py

ウィンドウが開き「Hello, World」と表示されたらOKです。

hello_py

hello_py