🎉 Kivyをインストールする

2021/10/30

🎉 Kivyをインストールする  スマホアプリにもう一度チャレンジしてみようかなと思い、Kivy をインストールしてみました。 あちこちでいろんなインストール方法を見ましたが、ここはやはり本家に書いてある方法が一番だと思い、apt コマンドでいきました。


$ sudo add-apt-repository ppa:kivy-team/kivy
$ sudo apt update
# 私は Python3 をメインとするので
$ sudo apt install python3-kivy
# さらにサンプルがあるといいので
$ sudo apt install kivy-examples

 サンプルをながめていくと、昔の Tcl/Tk のサンプルを思い出しました。 手軽に GUI を使えるスクリプト言語として登場し、わたしは使いませんでしたが、サンプルだけ楽しく見ました。 Python はインターフェースに Tcl/Tk の血を引いたところがあるので、そのためかもしれません。 いろんなことができ、しかも高速なのがいい感じです。 ムービーも mpeg の拡張子を mp4 のものに変えても全く問題なく動きました。

 少し前、Android Studio で Java で組み立てるアプリのレイアウトを少しばかり経験しましたが、 kivy のデザインもそれを取り入れているのか似たところがあります。 ただ、kivy の方が断然短く書ける感じです。 唯一気になったのが日本語入出力がデフォルトのままではできないことです。 サンプルには unicode_textinput.py というながいスクリプトがありますがエラー終了してしまいます。

 kivy をさわったのはまだわずかですが、下のリンクにあるように、フリーの IPA フォントをカレントディレクトリにダウンロードし、それを使うのが正解のような気がします。

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput

from kivy.core.text import LabelBase, DEFAULT_FONT
from kivy.resources import resource_add_path

resource_add_path("./")
LabelBase.register(DEFAULT_FONT, "ipaexg.ttf")

class LoginScreen(GridLayout):
    def __init__(self, **kwargs):
        super(LoginScreen, self).__init__(**kwargs)
        self.cols = 2
        self.add_widget(Label(text="お名前:"))
        ti = self.username = TextInput(multiline=False)
        ti.bind(on_text_validate=self.on_enter)
        self.add_widget(self.username)
    def on_enter(self, ti):
        print("on_enter[%s]" % (ti.text))

class IntroKivy(App):
    def build(self):
        return LoginScreen()
 
IntroKivy().run()

 これでいくと、表示だけでなく、右のエリアに日本語を入力し、[Enter]を押したとき、端末に確かに日本語が表示されるからです。 いずれにせよ、日本語処理は Perl も Python も結構厄介な部分があります。 一番簡単なのは日本発の Ruby だけでしょう。 この間 JS 将棋を eel でデスクトップアプリ化したときも、ファイルから読みこんだ S-JIS ファイルを Javascript から Python へ渡すのがかなり面倒でした……(Python は 3 であるにも関わらず)。

 eel ほど手軽というわけにはいきませんが(HTML + CSS + Javascript がそのまま使える)、kivy 内蔵の Kv Design Language というのも CSS に似て、それよりはるかにパワフルのようだし、Javascript にあたる部分は Python でずんずん書け、その上便利なパッケージが多数使えるため、かなりいい感じではないかと思えてきました。 ionic と同様、android だけでなく iphone でも同様に動くらしいのもうれしいところです。 あとは admob を入れるのが面倒とか、Javascript, node その他関係パッケージのバッティングといったトラブルに見舞われないですんなり公開に至ってほしいものです。

参考: Kivy日本語表示の設定
続き: Kivy+Buildozer環境作り

twitterシェア Facebookシェア
  コメントの注意点