我正在尝试实现一个时钟,但是现在我无法更新标签。我尝试使用print语句来查看函数被调用的天气,而且确实如此。但标签没有更新?为什么会这样?
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.image import Image
from kivy.config import Config
from kivy.clock import Clock
from kivy.properties import StringProperty
from kivy.graphics.instructions import InstructionGroup
from kivy.graphics.context_instructions import Color
import random
time_int= 0
class watch(BoxLayout):
time_str=StringProperty("00000:000000")
def incr(self):
global time_int
time_int+=1
time_str="00:0"+str(time_int)
print 'called'
class TimeApp(App):
def build(self):
return watch()
if __name__=="__main__":
TimeApp().run()
.kv文件
<watch@BoxLayout>:
Label:
text:root.time_str
Button:
on_press:root.incr()
答案 0 :(得分:0)
将<watch@BoxLayout>
更改为<watch>
。这为python代码中定义的widget类创建了一个规则,而前者创建了一个不需要python代码等价的全新类定义。
此外,您应该以大写字母开头命名您的小部件。这对你来说并不重要,但是kv语言在某些情况下使用它来区分它们,所以它是一个很好的习惯(也是一个普通的python约定)。