Kivyのドキュメントを読み解いて実装力を上げます。
今回はKivyの画面遷移の実装について勉強したので、まとめておきます。
Kivyで複数画面実装。
クリックで画面遷移!
これブラウザやAndroidアプリより簡単な気がする。#Python #Kivy #プログラミング pic.twitter.com/ghLT0yzRM1— カシワバユキ (@yuki_kashiwaba) 2019年1月10日
もくじ
今回学んだコード
まずはコード全文を載せておきます。
ソースは公式ドキュメントです。
from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Screen # Create both screens. Please note the root.manager.current: this is how # you can control the ScreenManager from kv. Each screen has by default a # property manager that gives you the instance of the ScreenManager used. Builder.load_string(""" : BoxLayout: Button: text: 'Goto settings' on_press: root.manager.current = 'settings' Button: text: 'Quit' : BoxLayout: Button: text: 'My settings button' Button: text: 'Back to menu' on_press: root.manager.current = 'menu' """) # Declare both screens class MenuScreen(Screen): pass class SettingsScreen(Screen): pass # Create the screen manager sm = ScreenManager() sm.add_widget(MenuScreen(name='menu')) sm.add_widget(SettingsScreen(name='settings')) class TestApp(App): def build(self): return sm if __name__ == '__main__': TestApp().run()
これをKivyでそのまま動かすと、先程の動画の画面を実装できます。
今回は、このコードをポイントに絞って解説していきます。
ScreenManagerを使う
KivyのScreenManagerは、画面遷移の際に必要なモジュールです。
下の一文で導入可能です。
from kivy.uix.screenmanager import ScreenManager, Screen
ScreenManagerについてはこちらのドキュメントを参照。
通常、Kivyの画面実装は、.kvファイルに記述されます。
しかし、今回は簡易的なプログラムだからか、Pythonファイルに記述されてますね。
そのために必要なモジュールもimportされてます。
from kivy.lang import Builder
画面実装部分はこちらのコード。
Builder.load_string(""" : BoxLayout: Button: text: 'Goto settings' on_press: root.manager.current = 'settings' Button: text: 'Quit' : BoxLayout: Button: text: 'My settings button' Button: text: 'Back to menu' on_press: root.manager.current = 'menu' """)
.kvファイル内で、画面遷移に関する記述がされてますね。
on_pressは、Buttonで使われるイベントで、クリックされたときの処理を記述しています。
root.manager.currentは、表示させる画面を指定しています。
この部分でオブジェクトを作成した際に設定したWigetのnameで指定してますね。
# Create the screen manager sm = ScreenManager() sm.add_widget(MenuScreen(name='menu')) sm.add_widget(SettingsScreen(name='settings'))
Kivyの画面遷移は表示画面を指定する形で実装されてるんですね。
一つ前の画面に戻りたいときなどはどうしたらいいのでしょう?
ページ遷移の流れを一本に統一しないといけないのですかね?
その辺は今後勉強していきます。
まとめ
まだKivyの勉強を初めてたったの2日ですが、すでに色々なものが作れそうでワクワクしてます。
PythonのGUIライブラリの中で最も勢いがあるというのも納得ですね。
何よりドキュメントが充実しているのが本当にありがたいです。
今後も引き続きKivyを勉強して、自作のデスクトップアプリケーションを配布できたらなと思います。