質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Kivy

Kivyは、Pythonを用いたNUI開発のためのオープンソースフレームワーク。マルチタッチなど多くの入力に対応したNUIアプリなどを開発することができます。多くの環境で動作するクロスプラットフォームです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

kv言語で、Pythonコードからのデータの受け渡しができずに、悩んでいます。

arakawa_kohsen
arakawa_kohsen

総合スコア0

Kivy

Kivyは、Pythonを用いたNUI開発のためのオープンソースフレームワーク。マルチタッチなど多くの入力に対応したNUIアプリなどを開発することができます。多くの環境で動作するクロスプラットフォームです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

2回答

0評価

0クリップ

2196閲覧

投稿2018/09/06 05:43

前提・実現したいこと

テスト用に、kivyで簡単な画面を作っています。
これは、各classごとに開発という手法をとっています。

Python3

from kivy.app import App from kivy.lang import Builder from kivy.properties import ObjectProperty from kivy.uix.boxlayout import BoxLayout Builder.load_string(''' <TestSCN>: tct_p: tct_v BoxLayout: OpeParts: ResultParts: Label: id: tct_v text: 'ZZZ' <OpeParts>: Label: text: 'AAA' <ResultParts>: rcAdd_p: rcAdd_v Label: id: rcAdd_v text: 'XXX' ''') class OpeParts(BoxLayout): pass class ResultParts(BoxLayout): rcAdd_p = ObjectProperty() def __init__(self,**kwargs): super(ResultParts, self).__init__(**kwargs) self.rcAdd_p.text = 'BBB' class TestSCN(BoxLayout): tct_p = ObjectProperty() def __init__(self,**kwargs): super(TestSCN, self).__init__(**kwargs) self.tct_p.text = 'CCC' class TestApp(App): def build(self): return TestSCN() if __name__ == '__main__': TestApp().run()

さて、Pythonのコードからkvファイルを使って、値を表示させることを意図していますが、このようなエラーメッセージが出て、うまく動きません。

Traceback (most recent call last): File "/home/arakawa/MyApp/01_filelist/kv19e2.py", line 60, in <module> TestApp().run() File "/usr/lib/python3/dist-packages/kivy/app.py", line 800, in run root = self.build() File "/home/arakawa/MyApp/01_filelist/kv19e2.py", line 56, in build return TestSCN() File "/home/arakawa/MyApp/01_filelist/kv19e2.py", line 50, in __init__ super(TestSCN, self).__init__(**kwargs) File "/usr/lib/python3/dist-packages/kivy/uix/boxlayout.py", line 131, in __init__ super(BoxLayout, self).__init__(**kwargs) File "/usr/lib/python3/dist-packages/kivy/uix/layout.py", line 76, in __init__ super(Layout, self).__init__(**kwargs) File "/usr/lib/python3/dist-packages/kivy/uix/widget.py", line 348, in __init__ Builder.apply(self, ignored_consts=self._kwargs_applied_init) File "/usr/lib/python3/dist-packages/kivy/lang/builder.py", line 469, in apply self._apply_rule(widget, rule, rule, ignored_consts=ignored_consts) File "/usr/lib/python3/dist-packages/kivy/lang/builder.py", line 585, in _apply_rule self._apply_rule(child, crule, rootrule) File "/usr/lib/python3/dist-packages/kivy/lang/builder.py", line 582, in _apply_rule child = cls(__no_builder=True) File "/home/arakawa/MyApp/01_filelist/kv19e2.py", line 43, in __init__ self.rcAdd_p.text = 'BBB' AttributeError: 'NoneType' object has no attribute 'text' プロセスは終了コード 1 で完了しました

ResultPartsの'BBB'を表示させたいのですが、うまくいきません。

Python(kv言語)

BoxLayout: OpeParts: ResultParts:

という書き方をやめればうまくいくと思いますが、先ほども言ったようにclassごとに開発をしたいと思っていますので、できればこの書き方を堅持したいと思っています。
この状況で、中央のLabelを'BBB'と表示させるには、どうしたらよいのでしょうか?

よろしくお願いいたします。

開発環境
Python 3.5.2 + kivy 1.10.1 + Ubuntu16.04

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Kivy

Kivyは、Pythonを用いたNUI開発のためのオープンソースフレームワーク。マルチタッチなど多くの入力に対応したNUIアプリなどを開発することができます。多くの環境で動作するクロスプラットフォームです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。