2022-08-03

スイッチ (Switch) 〜 Kivy

Kivy は、NUI (Natural User Interface) を持つモバイルアプリやその他のマルチタッチアプリケーションソフトウェアを開発するためのフリーでオープンソースの Python フレームワークです。MIT ライセンスのもとで配布され、Android, iOS, Linux, macOS そして Windows で動作させることができます。

Wikipedia より引用、翻訳、編集

使ったことのなかった Python の GUI ライブラリ(フレームワーク)、Kivy に興味を持ったので [1]、ひととおりウィジェットのサンプルを作ってみようとしています。サンプルを作っていくにあたって、どんなスタイルでコーディングするか、テンプレートみたいなものを固めていこうとあれこれ試し始めました。

今回はスイッチのサンプルを紹介します。

Python のコードのみのサンプルと、UI 部分を分離して Kv 言語で記述した同じ動作をするサンプルを併せて紹介しています。

下記の環境で動作確認をしています。

Fedora Linux 36 x86_64
python3 3.10.5-2.fc36.x86_64
Kivy 2.1.0

Switch (Python)

Switch は、機械的な照明スイッチのように、アクティブまたは非アクティブになるウィジェットです。ユーザーは、左/右にスワイプして、アクティブ/非アクティブにすることができます。

kivy_switch.py
import japanize_kivy
from kivy.app import App
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.switch import Switch
Window.size = (200, 200)
class KivySwitch(BoxLayout):
def __init__(self):
super().__init__()
self.orientation = 'vertical'
self.init_ui()
def init_ui(self):
sw = Switch(active=True)
sw.bind(active=self.on_swiped)
self.add_widget(sw)
def on_swiped(self, instance, value):
status = 'オフ'
if value:
status = 'オン'
print('スイッチが%sになりました。' % status)
class ExampleApp(App):
def build(self):
self.title = 'Switch'
return KivySwitch()
if __name__ == '__main__':
ExampleApp().run()
view raw kivy_switch.py hosted with ❤ by GitHub
kivy_switch.py の実行例
kivy_switch.py の実行例
   :
   :
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Base        ] Start application main loop
スイッチがオフになりました。
スイッチがオンになりました。

Switch (Python + Kv)

指定したファイルを読み込むようにしたかったので、ここでは Builder.load_file() を使って、指定したファイルを読み込むようにしています。

kivy_switch_1.py
import japanize_kivy
from kivy.app import App
from kivy.core.window import Window
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
Builder.load_file('kivy_switch_1.kv')
Window.size = (200, 200)
class KivySwitch(BoxLayout):
def on_swiped(self, instance, value):
status = 'オフ'
if value:
status = 'オン'
print('スイッチが%sになりました。' % status)
class ExampleApp(App):
def build(self):
self.title = 'Switch'
return KivySwitch()
if __name__ == '__main__':
ExampleApp().run()
kivy_switch_1.kv
<KivySwitch>:
orientation: 'vertical'
size: root.size
Switch:
id: sw
active: True
on_active: root.on_swiped(self, self.active)
kivy_switch_1.py の実行例

参考サイト

  1. bitWalk's: Kivy をちょろっと使ってみた [2022-07-10]
  2. Kv language — Kivy 2.1.0 documentation
  3. Widgets — Kivy 2.1.0 documentation
  4. Switch — Kivy 2.1.0 documentation

 

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ Linuxへ
にほんブログ村

0 件のコメント: