Kivyを使ってPythonで絵を描く|Pythonでやってみる

Python独学ならTech-Joho TOP > いろいろやってみた >Kivyを使ってPythonで絵を描く


Kivyとは

KivyはPythonをつかってGUI(グラフィカルユーザインタフェース)を作成するためのライブラリです。

利用することで、絵を描くことも可能です。

参考
Kuvi 公式サイト

こちらのpygameを使った例とほぼ同じように、矩形を描いてみましょう。


1.Pythonの実行環境の準備

Kivyは、このサイトでおなじみのブラウザ上の黒い欄、Brython Consoleでは動きません。
まず、自分のパソコンにインストールする必要があります。

詳しくは、こちらのページの「1.Pythonの実行環境の準備」の欄をご覧ください。
pygameを使ってPythonで絵を描く


2.Kibyのインストール

pipでKibyをインストールしましょう。

まず、Kivyをインストールする際は、Kiby本体以外に、いくつか事前にインストールが必要なものがあります。
ここでは、Macの場合のインストールを紹介します。

anaconda prompotや、comand prompt、power shellなどの、黒い画面で、下のコマンドを実行してください。

$ brew install pkg-config sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer

特にエラーメッセージがでなければ成功です。
下のようなインストール結果の概要がたくさんでてきます。

==> Summary
🍺  /usr/local/Cellar/gstreamer/1.12.4: 394 files, 20.8MB

次に、Cythonをインストールします。

$ pip install Cython==0.26.1

成功すると下のようなメッセージがでてきます。

Successfully installed Cython-0.26.1

最後に、Kivy本体をインストールします。

$ pip install kivy

途中、しばらく時間がかかります。
下のようなメッセージが表示されればインストール成功です。

Successfully installed Kivy-xxxxx

なお、私の環境では、下のメッセージがでて、一旦Kivyのビルドに失敗しました。

Failed building wheel for kivy

このissueで言われているのと同じ症状のようでした。
https://github.com/kivy/kivy/issues/5468

そこで、下のコマンドで開発中の最新バージョンをインストールしました。

$ pip3 install https://github.com/kivy/kivy/archive/master.zip

最終的には成功しました。

Successfully installed Kivy-1.10.1.dev0

3.まずは絵を書いてみる

絵を書いてみましょう。
シンプルに四角形(矩形)を描いてみましょう。

こちらと全く同じように描いてみます。
pygameを使ってPythonで絵を描く

kivytest.py

 from kivy.core.window import Window
Window.size = (300,200)

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color
from kivy.graphics import Rectangle

class MyApp(App):
    title = 'This is kivy sample'

    def build(self):
        widget = Widget()

        with widget.canvas:
            Color(1, 1, 0)
            Rectangle(pos=(10, 340), size=(20, 50))
        return widget

MyApp().run()

次に、ファイルを保存したディレクトリで下のコマンドを実行してください。

>>> python kivytest.py

このような黄色い長方形が左上に表示された小さなウインドウが出てくるはずです。

kivy window

このウインドウを消すには、右上のxを押して下さい。


4.解説

ソースコードのそれぞれの部分の意味を見ていきましょう。

from kivy.core.window import Window
Window.size = (300,200)

見てわかりやすく、ウインドウのサイズを幅300、縦200にしています。

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Color
from kivy.graphics import Rectangle

必要なモジュールをインポートしています。APPとWidgetは、どのようなKibyプログラムでも必須です。
ColorとRectangleは、色付きの矩形(Rectanle)を描くために必要です。

class MyApp(App):
    title = 'This is kivy sample'

Kivyでプログラムを作るには、何はともあれAppクラスか、それを継承したクラスのインスタンスを作る必要があります。
ここでは、Appクラスを継承したクラスをまずつくっています。
また、ウインドウ上部に表示するタイトルも指定しています。

def build(self):
        widget = Widget()

        with widget.canvas:
            Color(1, 1, 0)
            Rectangle(pos=(10, 340), size=(20, 50))
        return widget

buildメソッドの中で、具体的に描く内容を指定します。

Widgetクラスのインスタンスを作詞し、with widget.canvasの中で、
Colorクラスのインスタンスで黄色を指定し、
Rectangleクラスのインスタンスで矩形を指定しています。

Colorクラスのコンストラクタの引数は、赤色、青色、緑色の割合で、1から0で指定します。

Rectangleクラスのコンストラクタの引数のposは描く場所、sizeは大きさを指定します。
ちなみに、Kivyの座標は左下が原点のようです。

MyApp().run()

最後に作ったMyAppクラスのrunメソッドの実行でウインドウを描画します。


Author: 管理

tech-joho.infoの管理人です。いろいろな技術について勉強しています。