SAMURAI TERAKOYA

[kivy : アプリ開発] kivyファイルとpythonファイルにコードを分ける場合の書き方

kivy

本記事では、Pythonライブラリの一つであるkivyにてアプリ開発を行う上で、必要なkvファイル(.kv)作成からpythonファイルとkvファイルを用いたコードの書き方についてご紹介させて頂きます。ソースコードエディタ(VSCode)の準備がまだの方は、以下を参考にしてもらえればと思います。

 

【アニメ図解たっぷり】VSCodeの使い方入門!~ 基本からWeb制作まで
VIsual Studio Code(VSCode)の導入の仕方から使い方をアニメーションたっぷりで解説する入門記事です。はじめて使う人は迷いなく、導入〜基本的な使い方まで出来るようになります。プログラミング初心者の方には最適ですよ。

 

✅  kivyファイルの作成/コードの記述方法
✅  Builder.load_file(”)でkivyファイルの読み込み
✅  サンプルプログラム : 解説あり
✅  kivy言語にて活用されるプロパティの種類(一部紹介)

kv言語とは?

Pyhtonのライブラリであるkivy特有の言語になり、kivylangもしくは、kivy言語とも言われたりします。
kv言語は、pythonファイル以外にCSSに似たような形でコードを書いていきますが、宣言的な記述方法のため、とてもわかりやすく、変更やテストも効率よく実施出来る特徴を持っています。

pythonファイルにて読み込み、実行する事で、プログラムに反映させる事が可能です。

kivy言語のイメージ

kvファイル作成/コード解説

 

続いては、kvファイルの作成方法とコードの解説をさせて頂きます。

まずは、お好きな場所で構いませんので、
次にコードをコピペし、pyファイルを作成してください。

 

# pythonファイル
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.widget import Widget

# 日本語を適応させる
import japanize_kivy
# kvファイルを読み込む : Buliderをimportしていないと使えないので注意。
Builder.load_file('./test.kv')

class Test(Widget):
    # ウィジェット用のクラスを定義,  引数にWidgetを設定

class MySample(App):
    # メインクラスを定義, 引数にAppをを設定
  
  
    def build(self):
         # ウィジェットクラスを返す
         return Test()  

if __name__ == '__main__':
    # プログラムを実行
    MySample().run()
    

Builderのimportとkvファイルの読み込み

 

準備できましたら、早速、kvファイルの作成をしていきます。

kvファイルのコード記述におけるイメージも確認しつつ、以下と同様にコードを記述してみてください。
なお、test.kvは、kivy_sample.pyと同じ場所に配置しましょう。

kvファイルのコードの記述方法

<Test>:
   BoxLayout:  
         size: root.size  
         Label:  
             text: 'Testです。'  
         Button:  
             text: 'ボタンです。'

[解説]

1行目 :
pythonファイルに記述したウィジェットクラスを指定していますが、pythonファイルに記述した内容と一致しないとkvファイルが読み込まれませんので、気を付けましょう。

2行目 :
レイアウトの指定をしています。今回はBoxLayoutですが、簡単にいうと複数のウィジェットを垂直方向にも水平方向にも配置できるレイアウトになりまして、デフォルトでは、横方向に左から順に並ぶようになってます。
他にもFloatLayoutやGridLayoutなどございますが、詳細は本記事では、省かせて頂きますので、気になる方は、以下をご覧ください。

FloatLayout :

https://pyky.github.io/kivy-doc-ja/api-kivy.uix.floatlayout.html

GridLayout :

https://kivy.org/doc/stable/api-kivy.uix.gridlayout.html

3行目 :
レイアウトに対する設定を記述しています。Layoutのサイズ(大きさ)を指定していますが、数値での指定も可能です。

4行目 :
Labelウィジェットの定義です。

5行目 :
Labelウィジェットに対する設定を記述しています。 今回は、textプロパティですので、ラベル上に表示させるテキストを値として設定しています。プロパティは、複数記述が可能です。

6行目 :
Buttonウィジェットの定義です。

7行目 :
Buttonウィジェットに対する設定を記述しています。 今回は、textプロパティですので、ボタン上に表示させるテキストを値として設定しています。プロパティは、複数記述が可能です。

 

スポンサーリンク

プログラムの実行

 

プログラムの実行を行い、結果を確認しましょう。

 

ターミナルもしくはコマンドプロンプトにて、次のコマンドを打ちましょう。

 

◇ コードの実行

python3 kivy_sample.py

[ 結果 ]

解説用プログラム実行結果

サンプル

 

kivyファイルの書き方は、イメージできましたでしょうか??
私の方で準備しましたサンプルプログラムを公開させて頂きますので、参考にして頂ければと思います。

 

from kivy.app import App 
from kivy.uix.widget import Widget
from kivy.properties import StringProperty 
from kivy.core.window import Window 
from kivy.lang import Builder

# 日本語を適用させる
import japanize_kivy

# sample.kvを読み込む
Builder.load_file('./sample.kv')

# Windowの背景色を変更 (黒 → 白)
Window.clearcolor = (1, 1, 1, 1)

# ウィジェットクラス
class Sample(Widget):
    # プロパティの追加
    text = StringProperty()
    def __init__(self, **kwargs):
        super(Sample, self).__init__(**kwargs)
        # 初期値の設定
        self.text = 'kivyの練習です!'

    # コールバック用の関数を定義
    def callback(self, **kwargs):
        # 呼び出された際に、textの値を更新
        self.text = 'kivy : 基礎学習'
# メインクラス
class Test(App):
    def build(self):
        # ウィジェットクラスを返す
        return Sample()

if __name__ == "__main__":
    # アプリを起動
    Test().run()
sample.kvは、Sample.pyと同じ場所に配置しましょう。
<Sample>: 
    FloatLayout:
        size: root.size
        Image:
            source: "logo_utubou_01.png"
            size_hint: (1,0.2)
            pos_hint: {"x":0, "y": 0.65}

        Label:
            text: root.text
            font_size: 40
            pos_hint: {"x": 0.01, "y": 0.4}
            size_hint: (1,0.2)color: "blue"

        Button:
            text: 'クリック'
            background_color: "blue"
            size_hint: (0.7,0.2)
            pos_hint: {"x":0.144, "y": 0.2}
            color: "white"
            font_size: 50
            background_normal: ""
            on_press: root.callback()

◇ プロパティ —–

text → 表示させるテキストを指定
background_color → 背景色を指定
size, size_hint → サイズを指定
pos_hint → 配置場所を指定 ( x, y, top, right )
color → 文字色を指定
font_size → フォントサイズを指定
background_normal → デフォルトの背景色を解除する際などに使用
source → ファイルパスを指定
————————-

◇ イベント —–

on_press → ボタンをクリックした際に実行される
————————-

 [ 結果 ]

サンプルプログラム実行結果

まとめ

pythonファイルのみで書いていくことも可能ではありますが、基本的にkivyでアプリ開発を行う際は、kv言語とPythonでファイルを分けるようにしましょう。また、今回、サンプルプログラム上で使用したプロパティなどはほんの一部ですので、公式サイトなどを通して、確認してみることは、知識を増やす面も含めて、お勧め致します。

コメント

タイトルとURLをコピーしました