2017-10-10 18 views
1

私は解決できない問題があります。AttributeError: 'float'オブジェクトに 'root'属性がありません

私は次のコードを実行すると、私はこのエラーを取得

AttributeError: 'float' object has no attribute 'root' 

すべてが私の広告はA Clock.schedule

コードまで正常に動作します。たとえば

from kivy.app import App 
from kivy.uix.floatlayout import FloatLayout 
from kivy.uix.label import Label 
from kivy.clock import Clock 

global C 
C = 0 




class Example(App): 
    def build(self): 
      global C 
      C = C + 1 
      y = str(C) 
      self.root = FloatLayout() 
      self.label = Label(text=y, pos=(0,0), size_hint=(1.0,1.0), halign="left") 


     self.label.text_size = self.label.size 
     self.root.add_widget(self.label) 
     return self.root 
     Clock.schedule_once(build, 0.1) 

Example().run() 

:私はしたいです時間を更新するには、毎秒メソッドを呼び出す

#Clock.schedule_in terval(テスト、1)

だから私は

秒ごとのメソッドを呼び出すが、私は時間を更新し、ID時間でlableに送信したい場合、私は同じエラーを取得します....

def test(self): 
    z = time.strftime("%H:%M:%S") 
    self.ids.time.text = (y) 

はClock.schedule_interval(テストでは、1)このPROJEKTで

私の目標は、すべてのページに時間を示し、例えば、毎秒lablesに異なる画面上の異なる入力のステータスを更新することです。

私は次のコマンドを試みたが、私はそれが= MyTime

+0

Clock.schedule_once()の処理を行う前に戻ってもよろしいですか? – jdv

+0

私はそれが問題ではないと思う、私は私の主なプロジェクトのメソッドの多くでこのエラーがあります。 –

答えて

1

build

self.the_time.textも、方法であり、そのようなものとしてself.buildと呼ばれる複数次いで、1画面分の動作doesntの推測スケジューリングからの経過時間のfloat引数を受け入れる必要があります。

私は、メソッドがアンバウンド(暗黙の自己なし)と呼ばれ、selfにそのfloat値が割り当てられていると仮定して、このメソッドは浮動小数点数をselfとして処理しようとします。

TL & DR:Clock.schedule_once(self.build, 0.1)を使用し、def build(self, dt=0):のようなものにbuild宣言を変更してください。

+0

ありがとうございます、魅力のように動作します。 –

+0

聞いてよかったら、答えを受け入れてください。ありがとう:) – Tshirtman

関連する問題