我想用简单的文字将.kv文件中的功能绑定到.py文件中的方法,我想每天在应用程序的主屏幕上更新引号,因此我使用屏幕小部件显示引号,因此如何绑定将label.text转换为.py文件中的方法这是我要绑定的.py文件的类
class MainScreen(FloatLayout):
def quote(self):
self.quote.text = 'I often think that the night is more alive and more richly colored than
the day. - Vincent van Gogh'
这是.kv文件的根小部件
<MainScreen>:
story: story
canvas:
Color:
rgba: 0, 0, 0, 1
Rectangle:
pos: self.pos
size: self.size
Label:
id: story
text: root.quote
font_size: '20sp'
size: self.texture_size
pos_hint: {'x': -0.2, 'y': 0.27}
但是显示错误消息说label.text必须是字符串
您可以使用猕猴桃Property
,并使用quote()
方法更新该Property
。这是在您的代码中执行此操作的一种方法:
class MainScreen(FloatLayout):
quote_text = StringProperty('Not Set')
def quote(self, *args):
self.quote_text = 'I often think that the night is more alive and more richly colored than the day. - Vincent van Gogh'
[quote_text
是可以在StringProperty
中引用的kv
,并且quote
方法现在更新了StringProperty
。
以及您的kv
:
<MainScreen>:
story: story
canvas:
Color:
rgba: 0, 0, 0, 1
Rectangle:
pos: self.pos
size: self.size
Label:
id: story
text: root.quote_text
font_size: '20sp'
size: self.texture_size
pos_hint: {'x': -0.2, 'y': 0.27}
然后,调用quote()
方法将更新Label
文本。要对其进行测试,可以将build()
的App
方法用作:
def build(self):
main = MainScreen()
Clock.schedule_once(main.quote, 5)
return main