RaspberryPi2 + kivy
RaspberryPi公認のタッチディスプレイが発売されたので、入手したはいいが、何に使おうか・・・といった状況になっていたので、PythonのGUIフレームワーク?であるkivyに触れてみた。
Pi用kivyイメージを入手
から目的にあったkivy Pieを入手して、Win32DiskImagerとかでOS起動用のSD(micro)を準備する。kivy Pie のバージョン0.6以上は3.5Gに容量が増えてるみたいなので、注意。
Win32DiskImagerで対象となるドライブを間違えないようにね!!
OS起動
ユーザーはsysop
パスワードはposys
でログインできる。
どうやらWiringPiもインストールされているようなので、個別にダウンロード、ビルドする手間が省ける。
kivyに触れる
kivy-exampleの中にdemoディレクトリがあって、その中のshowcaseで動作を覗いてみた。
python main.py
とコンソール上でコマンドを打つと実行できるはず。
基本的には動いているが、spinnerとdropdownの動作がいまいち安定しない。
何かしらの設定が悪いのかも知れないがハマりそうなので、とりあえず放っておく。
それ以外のタッチ感や操作感は特に問題なさそうに感じた。
Pythonにてコーディング
どうも調べていると、GUIのレイアウトは.kvというkivyのスタイルでコーディングして、制御などの内部処理はPythonで記述するというのが主流のようだが、メンドウなので、レイアウトもPythonで書いてみた。
from kivy.app import App from kivy.uix.button import Label, Button from kivy.config import Config from kivy.core.window import Window Config.set('graphics', 'width', '200') Config.set('graphics', 'height', '200') class RootWidget(FloatLayout): def __init__(self, **kwargs): super(RootWidget, self).__init__(**kwargs) self.Sample1Btn = Button(text="Sample1", font_size = "18sp", size_hint=(.3, .15), pos_hint={'center_x': .2, 'center_y': .7}) self.Sample1Btn.bind(on_press=self.Sample1Btncallback) self.add_widget(self.Sample1Btn) def Sample1Btncallback(self,instance): print("Sample1") class TestApp(App): def build(self): self.root = root = RootWidget() self.title = 'Test Sample' return self.root TestApp().run()
とすると画面左上あたりにbuttonができる。ボタンが押されるとSample1Btncallbackが実行されて、コンソール上にprintの内容が表示される。
日本語フォントの利用(失敗)
buttonに表示する文字を日本語にしたかったので、フォントをダウンロードしてきて、
import kivy from kivy.resources import resource_add_path from kivy.core.text import LabelBase, DEFAULT_FONT resource_add_path('/home/sysop/Mykivy/') LabelBase.register(DEFAULT_FONT, 'IPAexfont00301/ipaexg.ttf')
としてデフォルトで日本語フォントを利用するようにしてみたが、表示がblankになってしまい失敗。一瞬真っ黒な文字背景が表示された気がしたが・・・。
さらに、
self.Sample1Btn = Button(text="Sample1", font_size = "18sp", font_name = 'IPAexfont00301/ipaexg.ttf', size_hint=(.3, .15), pos_hint={'center_x': .2, 'center_y': .7})
のように個別でフォント指定してみたけど失敗・・・。一体どうしたらRaspberryPi+kivyで日本語表示できるのか・・・。
RaspberryPi2 + kivyは意外と面白い
思っていた以上にRaspberryPi2とkivyの組み合わせが面白かったので、もう少しいじってみる。次はToggleButtonとSliderかな・・・。
---追記---
いちおToggleButton使ってみたので、リンク張っておく。