lisz-works

技術系だけど関係ないこと多い系ブログ

KivyにHello World!Pythonで簡単にGUIでマルチプラットフォームなアプリが作れちゃう!?

【スポンサーリンク】

Kivy×Python

KivyというPythonライブラリをご存じでしょうか?

マルチプラットフォームなGUIアプリが簡単に作れてしまう……という魅力的な言葉に惹かれて……

とりあえずインストールとHello Worldしてみました!

Kivyとは?

Pythonを使って、下記のような様々なプラットフォームで動作するアプリを作成できるオープンソースライブラリです。

  • Android
  • iOS
  • Linux
  • OS X
  • Winsows
  • Raspberry Pi

ソースコードを各プラットフォームで流用でき、Kvという言語でUI簡単に作れるそうです。

トキメイタので、まずは初手!試してみました!

インストール手順

コチラの記事を参考にしました。

Kivy 超入門(1):インストールからHello, World! まで

手順としては、たった3ステップ。

  1. Pythonのバージョンを確認
  2. whlファイルをダウンロード
  3. コマンドを叩いてインストール

Pythonのバージョンを確認

コマンドプロンプトを開き*1、「python –version」を実行しましょう。

C:\>python --version
Python 3.6.0 :: Anaconda 4.3.1 (64-bit)

ぼくの場合、「Python 3.6.0」ですね。

whlファイルをダウンロード

まずコチラにアクセスします。

http://www.lfd.uci.edu/~gohlke/pythonlibs/#kivy

現在ダウンロードできるものが表示されます。
この中から自分の環境に合ったものを、ダウンロードします。

ぼくの場合は、

  • Python: 3.6.0
  • Windows 64bit

なので「Kivy-1.10.0-cp36-cp36m-win_amd64.whl」をダウンロードします。

ファイル名は

  • cp:Pythonのバージョン(3.6.0の場合、36)
  • win: Windowsのbit(win32: 32bit版, win_amd64: 64bit版)

となります。

インストール

まずはダウンロードしたファイルが置かれた場所に移動しましょう。

次にこのフォルダ内のアドレスバーに、「cmd」と入力し、Enterを入力します。

するとこのフォルダがカレントの状態で、コマンドプロンプトが開きます。

開いたコマンドプロンプトに「python -m pip install <ダウンロードしたwhlファイル名>」を入力し、Enterを入力します。

するとこのように表示が進んでいき……

C:\Users\xxx\Downloads>python -m pip install Kivy-1.10.0-cp36-cp36m-win_amd64.whl

Processing c:\users\xxx\downloads\kivy-1.10.0-cp36-cp36m-win_amd64.whl
Requirement already satisfied: docutils in c:\users\xxx\appdata\local\continuum\
anaconda3\lib\site-packages (from Kivy==1.10.0)
Collecting Kivy-Garden>=0.1.4 (from Kivy==1.10.0)
  Downloading kivy-garden-0.1.4.tar.gz
Requirement already satisfied: pygments in c:\users\xxx\appdata\local\continuum\
anaconda3\lib\site-packages (from Kivy==1.10.0)
Requirement already satisfied: requests in c:\users\xxx\appdata\local\continuum\
anaconda3\lib\site-packages (from Kivy-Garden>=0.1.4->Kivy==1.10.0)
Requirement already satisfied: idna<2.6,>=2.5 in c:\users\xxx\appdata\local\cont
inuum\anaconda3\lib\site-packages (from requests->Kivy-Garden>=0.1.4->Kivy==1.10.0)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\xxx\appdata\local\
continuum\anaconda3\lib\site-packages (from requests->Kivy-Garden>=0.1.4->Kivy==1.10.0)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:\users\xxx\appdata\loc
al\continuum\anaconda3\lib\site-packages (from requests->Kivy-Garden>=0.1.4->Kivy==1.10.0)
Requirement already satisfied: urllib3<1.22,>=1.21.1 in c:\users\xxx\appdata\loc
al\continuum\anaconda3\lib\site-packages (from requests->Kivy-Garden>=0.1.4->Kivy==1.10.0)
Building wheels for collected packages: Kivy-Garden
  Running setup.py bdist_wheel for Kivy-Garden ... done
  Stored in directory: C:\Users\xxx\AppData\Local\pip\Cache\wheels\27\08\88\8893
8a7cf5b20073ff1f0432b7c0dd172531185cc74d97f5da
Successfully built Kivy-Garden
Installing collected packages: Kivy-Garden, Kivy
Successfully installed Kivy-1.10.0 Kivy-Garden-0.1.4

C:\Users\xxx\Downloads>

インストールが完了します。

Hwllo Worldしてみる

KivyのAPIリファレンスに載っていたサンプルを実行。

# -*- coding: utf-8 -*-
import kivy
kivy.require('1.0.7')

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

class TestApp(App):
    def build(self):
        # return a Button() as a root widget
        return Button(text='hello world')

if __name__ == '__main__':
    TestApp().run()

表示されました!

GUI起動後

こんな簡単にGUIアプリが作れるとは……

ちなみに表示されているものはボタンなので、クリックすると反応します。
(押下時の処理がないので、ボタンアクションだけですが)

なにしてるのか?

読めない英語を読んだ感じだと……

どうやらbuild()メソッドを、オーバライドすることで実装しているようです。

オーバライドとは…

親クラスのメソッドを子クラスで上書きすること
引用:http://wa3.i-3-i.info/word138.html

オブジェクト指向の考え方で、継承というものがあります。

その機能の1つにオーバライドというものがあります。

親クラスから受け継いだ機能を、自分用に書き換えるようなイメージですね。
(説明が難しい)

気になる方は、オブジェクト指向についてのページや、本を読んでみると理解が深まると思います。

あとがき

いかがでしたでしょうか?

試してみた感触として、かなり簡単にGUIアプリが作れました。
とはいえ、Hello Worldだけなので、もっと凝ったことしようとするとどうなのかな?という懸念はあります。

その辺は、これからいじくっていこうと思います。

KivyにはAndroidアプリ「Kivy Launcher」というものがあります。

これを使えばAndroid上で、Kivyを使ったPythonを実行することができます。

ということは
PC上で組んだKivyのアプリをAndroidで簡単に試してみたり
クラウドやGitと連携して、PCとAndroidどちらでも開発してみたり

なんて妄想が膨らみますね……

気になった方は、ひとまずKivyに「こんにちわ」してみてはいかがでしょうか?

*1:Windows+R→「cmd」を入力してOKボタン