2017-01-01 70 views
1

以下是我正在使用的基本示例。该标签显示为我所期望的,但文本从未更改,即使我看到控制台中的打印语句显示Clock.schedule_interval为,其间距为。任何想法,以什么已经出错?试图更改Kivy中的标签文本,它永远不会更改

谢谢你,新年快乐!

首先.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

你缺少括号

button_text = ObjectProperty 

变化

button_text = ObjectProperty(None) # Ha! :) 

你也应该返回,而不是创建另一个演示

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

由于后面的演示将不会更新...

+0

而你是正确的:)愚蠢错过对象创建的开始!谢谢您的帮助 – Craig