前提・実現したいこと
最近kivyを勉強しており
https://pythontic.com/app/kivy/spinner
このサイトの例と同じアプリをkv言語を用いて書きたいと思っています。
FloatLayoutの子にSpinnerとLabelを加え、SpinnerのtextをLabelに反映させることが目的です。
Label側からSpinnerを反映させることができない理由が知りたいです。
どうぞよろしくお願いします。
発生している問題・エラーメッセージ
・・・・・ ・・・・・ AttributeError: 'MyFloatLayout' object has no attribute 'MySpinner' During handling of the above exception, another exception occurred: ・・・・・ ・・・・・ ... 12: 13:<MyLabel>: >> 14: text:"Selected value in spinner is: %s" %self.parent.MySpinner.text ... AttributeError: 'MyFloatLayout' object has no attribute 'MySpinner'
該当のソースコード
main.py
from kivy.uix.label import Label from kivy.uix.spinner import Spinner from kivy.uix.floatlayout import FloatLayout from kivy.app import App class MyFloatLayout(FloatLayout): pass class MySpinner(Spinner): pass class MyLabel(Label): pass class SpinnerTest(App): pass if __name__=="__main__": SpinnerTest().run()
spinnertest.kv
MyFloatLayout: MySpinner: pos_hint: {"x":.1, "y": .75} MyLabel: pos_hint: {"x":.1, "y":.3} <MySpinner>: (id: sp) size_hint: (0.3, 0.2) text: "Python " values: ("Python", "Java", "C++") <MyLabel>: text:"Selected value in spinner is: %s" %self.parent.MySpinner.text
試したこと
MySpinnerのtextをtext:"%s" %self.parent.MyLabelとすると逆に"MyFloatLayout" object has no attribute "MyLabel"と表示されるので、MySpinnerもMyLabelもMyFloatLayoutを親に持っていると思います。
また、参考にしたサイトのコード(https://pythontic.com/app/kivy/spinner)は問題なく動くことを確認しました。
Spinnerにid: sp をいれて %sp.textとすると"function" has no attribute "text"とエラーが出ます。
補足情報(FW/ツールのバージョンなど)
python 3.7.7
Kivy 1.11.1
を使っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/13 00:27