试图在Kivy中更改标签文本,它永远不会改变

时间:2017-01-01 19:42:20

标签: python python-3.x kivy kivy-language

以下是我正在使用的基本示例。标签显示为我所期望的,但文本永远不会更改,即使我确实在控制台中看到显示Clock.schedule_interval 滴答的打印语句。关于出了什么问题的任何想法???

谢谢你,新年快乐!

首先是.kvlang文件

<Demo>:
    button_text: my_button
    BoxLayout:
        Label:
            id: my_button
            text: 'Initial Text!'

我的Python。

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty, StringProperty
from kivy.clock import Clock
import random



class Demo(BoxLayout):
    button_text = ObjectProperty

    def change_text(self, dt):
        self.button_text.text = str(random.randint(1, 10))
        print('Should have changed button text to {}'.format(self.button_text.text))

    def start(self):
        Clock.schedule_interval(self.change_text, 10)

class TutorialApp(App):
    def build(self):
        foo = Demo()
        foo.start()
        return Demo()

if __name__ == "__main__":
    TutorialApp().run()

1 个答案:

答案 0 :(得分:1)

您缺少括号

button_text = ObjectProperty

更改为

button_text = ObjectProperty(None) # Ha! :)

此外,您应该返回 foo 而不是创建另一个演示

def build(self):
    foo = Demo()
    foo.start()
    #return Demo() change to...
    return foo

由于之后的演示不会更新...