AttributeError: 'float' object has no attribute 'root'
AttributeError: 'float' object has no attribute 'root'
我有一个我无法解决的问题。
当我运行下面的代码时我得到这个错误
AttributeError: 'float' object has no attribute 'root'
在我添加 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_interval(测试, 1)
所以我每秒调用一次方法
但是如果我想更新时间并将其发送到带有 ID 时间的标签,我会得到同样的错误....
def test(self):
z = time.strftime("%H:%M:%S")
self.ids.time.text = (y)
Clock.schedule_interval(测试, 1)
我在这个项目中的目标是在每个页面上显示时间,并将不同屏幕上不同输入的状态更新为标签,例如每秒更新一次。
我尝试了以下命令,但我想它对超过一个屏幕不起作用
self.the_time.text = MyTime
build
是一种方法,因此被称为 self.build
,而且,它应该接受一个浮点参数,表示自调度以来经过的时间。
我假设发生的情况是该方法被称为未绑定(没有隐式自我)并且自我被分配了那个浮点值,所以该方法试图使用该浮点数作为 self
,这是行不通的出于非常明显的原因。
TL&DR:使用 Clock.schedule_once(self.build, 0.1)
并将 build
声明更改为 def build(self, dt=0):
.
我有一个我无法解决的问题。
当我运行下面的代码时我得到这个错误
AttributeError: 'float' object has no attribute 'root'
在我添加 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_interval(测试, 1)
所以我每秒调用一次方法
但是如果我想更新时间并将其发送到带有 ID 时间的标签,我会得到同样的错误....
def test(self):
z = time.strftime("%H:%M:%S")
self.ids.time.text = (y)
Clock.schedule_interval(测试, 1)
我在这个项目中的目标是在每个页面上显示时间,并将不同屏幕上不同输入的状态更新为标签,例如每秒更新一次。
我尝试了以下命令,但我想它对超过一个屏幕不起作用
self.the_time.text = MyTime
build
是一种方法,因此被称为 self.build
,而且,它应该接受一个浮点参数,表示自调度以来经过的时间。
我假设发生的情况是该方法被称为未绑定(没有隐式自我)并且自我被分配了那个浮点值,所以该方法试图使用该浮点数作为 self
,这是行不通的出于非常明显的原因。
TL&DR:使用 Clock.schedule_once(self.build, 0.1)
并将 build
声明更改为 def build(self, dt=0):
.