『Python Kivy』API説明:kivy.app


AppクラスはKivyアプリケーションの作成の基礎です.これをKivy運転サイクルにおけるメインエントリと見なすことができる.ほとんどの例では、このクラスのサブクラスを作成し、独自のアプリケーションを構築します.アプリケーションのライフサイクル全体を開始する準備ができたら、カスタマイズしたappクラスをインスタンス化し、このインスタンスのrun()メソッドを呼び出すことができます.
アプリケーションの作成
重荷重build()方法
widgetツリーを使用してアプリケーションを初期化するには、build()メソッドを再ロードし、構築したwidgetツリーに戻る必要があります.
import kivy
kivy.require('1.8.0')

from kivy.app import App
from kivy.uix.gridlayout import GridLayout

class IndexScreen(GridLayout):
    def __init__(self, **kwargs):
        super(IndexScreen, self).__init__(**kwargs)
        pass

#         App              
class TestApp(App):
    def build(self):
        return IndexScreen()

if __name__ == '__main__':
    TestApp().run()
kvファイルを使用したアプリケーションの作成
kivy言語を使用してアプリケーションを作成することもできます..kvファイルには、ルールとルートwidget定義を同時に含めることができます.
#:kivy 1.8.0

Button:
    size: root.size
    text: "Hello ,World"
```
import kivy
kivy.require('1.8.0')

from kivy.app import App

class MyApp(App):
    pass

if __name__ == '__main__':
    MyApp.run()

構成の適用
プロファイルの使用
Kivyは、次のようにアプリケーションの独立したプロファイルを作成することをサポートします.
class MyApp(App):
    def build_config(self, config):
        config.setdefaults('section1', {
            'key1': 'value1',
            'key2': 'value2'
            })

システムは、build_configメソッドで提供される情報に基づいて、my.iniというファイルを自動的に作成し、対応する構成情報を設定します.
[section1]
key2 = value2
key1 = value1
build_configメソッドを使用するのではなく、my.iniファイルを直接作成することもできます.アプリケーションは実行時に自動的にこのファイルをロードします.プロファイルの名前は、アプリケーションクラスの接頭辞と一致する必要があります.
例:設定パネルの適用App.build_settings()メソッドを拡張して、独自の設定パネルを作成することができます.settingsを参照して、具体的な作成方法を見つけることができます.
class MyApp(App):
    def build_settings(self, settings):
        jsondata = """
            [
                { "type": "title",
                  "title": "Test application" },

                { "type": "options",
                  "title": "My first key",
                  "desc": "Description of my first key",
                  "section": "section1",
                  "key": "key1",
                  "options": ["value1", "value2", "another value"] },

                { "type": "numeric",
                  "title": "My second key",
                  "desc": "Description of my second key",
                  "section": "section1",
                  "key": "key2" }
            ]
        """
        settings.add_json_panel('Test application', self.config, data=jsondata)

実行すると、F1を使用して設定パネルを起動できます.JSONの設定オプションを使用して、前に作成したプロファイルの内容に関連付けます.プログラムでApp.open_settings()App.close_settings()を呼び出して、設定パネルをオンまたはオフにすることもできます.設定パネルの設定は、プロファイルに自動的に保存されます.デフォルトでは、kivyのグローバル設定も設定パネルにロードされます.次の宣言で閉じることができます.
class MyApp(App):
    use_kivy_settings = False
    # ...

設定パネルの項目を手動で調整することもできます.詳細はsettingsを参照してください.
使用on_startとon_stop検出応用性能
cProfileを参照
import cProfile

class MyApp(App):
    def on_start(self):
        self.profile = cProfile.Profile()
        self.profile.enable()

    def on_stop(self):
        self.profile.disable()
        self.profile.dump_stats('myapp.profile')

カスタム設定インタフェースApp.settings_clsを設定することで、さまざまな設定インタフェーススタイルを選択できます.また、独自の設定インタフェースを作成することもできます.具体的にはkivy.uix.settings App.display_settings()をリロードすることで、設定パネルが画面に表示される前に呼び出される設定パネルの表示をカスタマイズできます.次のようになります.
def display_settings(self, settings):
    try:
        p = self.settings_popup
    except AttributeError:
        self.settings_popup = Popup(content=settings,
                                    title='Settings',
                                    size_hint=(0.8, 0.8))
        p = self.settings_popup
    if p.content is not settings:
        p.content = settings
    p.open()

def close_settings(self, *args):
    try:
        p = self.settings_popup
        p.dismiss()
    except AttributeError:
        pass # Settings popup doesn't exist

最後に、現在の設定パネルを置き換える場合は、App.destroy_settings()を使用して設定パネルの内部インデックスを削除します.App.display_settings()を変更した場合は、設定パネルが置き換えられているかどうかを確認する必要があります.
一時停止モード
このモードは試行的で、携帯電話やタブレット向けに設計されています.アプリケーションのクラッシュや一時停止を引き起こす可能性があります.
携帯電話やタブレットでは、ユーザーが任意のタイミングで別のアプリケーションに切り替える可能性があります.この場合、kivyはデフォルトでApp.on_stop()イベントをアクティブにします.
一時停止モードを提供すると、別のアプリケーションに切り替えると、ユーザーが戻ってくるまでアプリケーションが無限に待機します.AndroidでOpenGLの問題があります.一時停止すると、OpenGL ES Contextが格納されていないことが確認されます.OpenGLデータを格納するメカニズムはKivyでは実現されていない.
次に、一時停止モードの例を示します.
class TestApp(App):

   def on_pause(self):
      #           
      return True

   def on_resume(self):
      #                   
      pass

リファレンス
  • kivy.app