57269


この記事にあるように

[Kivyのrootについて](https://qiita.com/Agipy/items/6be3651b1200c1e3c677)

KV言語でappと書くことではAppインスタンスを参照できますが、KV言語ではなくPythonで書いたWidgetからAppのインスタンスを得るにはどうしたらいいのでしょうか？

Widgetごとにファイルを分けて、アプリケーションを作っていますが、設定値などウィジェットツリー全体でグローバル変数のように値を読み書きしたいです。  
Appインスタンスにメンバとして設ければよいかと思ったものの、Appの参照方法で躓いてしまいました。


CC BY-SA 4.0
2019-07-03T09:47:22.323
56351
2019-08-09T07:33:03.390
34495
question
python kivy
自作Widgetが配置されたAppインスタンスを取得したい

[code]

    Builder.load_string("""
    <hoge>:
        app: app
    """)
    
    class hoge(Widget):
        app = ObjectProperty()
    
[/code]

appプロパティを自作して、Kivy言語でセットすることでやりたいことはひとまず解決しました。


CC BY-SA 4.0
2019-07-17T23:57:21.540
56708
2019-07-17T23:57:21.540
34495
56351
answer


別な調べ物をしていた時に、この質問の解決策を見つけました。

[How to exit a Kivy application using a
button](https://stackoverflow.com/questions/32425831/how-to-exit-a-kivy-
application-using-a-button)

[code]

    from kivy.app import App
    App.get_running_app()
    
[/code]

とすることで、Kivy言語内でappとしたものと同じオブジェクトが取得できるようです。


CC BY-SA 4.0
2019-08-09T07:33:03.390
57269
2019-08-09T07:33:03.390
34495
56351
answer