PythonでGUIアプリケーションを開発する方法はいくつかあるが、最も汎用性が高くマルチプラットフォームに対応した方法はKivyを使用する方法である。
- Kivyとは
- Kivyの導入方法
- Kivy上で日本語を実装する方法
- Python + Kivy の構成イメージ
- Kivyでよく使用されるプロパティ
- よく使用されるイベント
1. Kivyとは
Kivy とは Python の GUI用ライブラリー(フレームワーク)のことである。
Kivyのサンプルプログラムは下記のサイトが最も参考になる。
https://pyky.github.io/kivy-doc-ja/examples/gen__demo__showcase__main__py.html
ソースコードは以下の通り。下記の画像のような単一機能のカタログのようなアプリでKivyでできることを確認できる。
https://github.com/kivy/kivy/blob/master/examples/demo/showcase/main.py
2. Kivyの導入方法
下記のコードをターミナル上で順に実行することで使用可能となる。
# step1
python
# step2
exit()
# step3
set HTTP_PROXY=http://nnn.nnn.xxx.xxx
# step4
set HTTPS_PROXY=http://nnn.nnn.xxx.xxx
# step5
set USER=******
# step6
pip install –upgrade pip
# step7
pip install kivy
3. Kivy上で日本語を実装する方法
Kivyでは通常、kvスクリプト内で、あるいはラベルやテキストインプットなどのウィジェット上で日本語を使用することができないが、japanize_kivy というライブラリーを使用することで、日本語を使用可能となる。
# step8: "_"ではなく"-"であることに注意
pip install japanize-kivy
通常のライブラリーと同様pyスクリプト上で下記のようにimportすれば良い。
import japanize_kivy # import時は"_"を使用することに注意
4. Python + Kivy の構成イメージ
概ね下記のような感じ。
5. Kivyでよく使用されるプロパティ
プロパティ例 | 機能 |
halign: ‘left’ | # 水平(横)方向の位置揃え: horizontal align(整列) |
valign: ‘center’ | # 鉛直(縦)方向の位置揃え: vertical align(整列) |
width: “100px” | # ボタンなどのウィジェットの横幅 |
height: “20px” | # ボタンなどのウィジェットの縦幅 |
size_hint: (None,None) | # ボタンなどのウィジェットの縦横比: Noneを指定することで上記横幅・縦幅が適用される |
pandding: ( “0px”, “0px”) | # border領域の内側の余白を設定 |
margin: ( “0px”, “0px”) | # border領域の外側の余白を設定 |
pos: (“90px”, “90px”) | # ボタンなどのウィジェットの位置 (原点は左下) |
font_size: “18px” | # テキストの大きさ |
text: “default” | # などのウィジェットの上(内側)に表示するテキスト |
color: (0.3, 0.6, 1.0, 1.0) | # テキストの色 (R, G, B, 不透明度α) |
id: label_01 | #他のプロパティやイベントから呼び出すときにselfの代わりに使用する |
6. イベント
イベント例 | 機能 |
on_press: print(“Buttonが押されました”) | # Buttonが押されたときに発生(機能)するイベント |
on_release: print(“Buttonが押されました”) | # ボタンをリリースした(離した)ときの動作 |
on_touch_down: print(“画面が押されました”) | # 画面がタッチ(クリック)されたときに発生するイベント |
on_touch_up: print(“画面が押されました”) | # 画面がタッチ(クリック)されて離されたときに発生するイベント |
on_text_validate: print(“テキストインプットへの入力が完了”) | # プロパティmultiline=Flaseのときにのみ機能する(発生する)イベント |
on_focus: print(“テキストインプットへの入力中です”) | # フォーカス(アクティブ、文字入力可能な)状態になったときに発生するイベント |
EOF