本节要将2.10.1基础布局中实现的:显示"00:00:00"的时间窗口,实时地替换为当前时间。需要解决的问题有两个:
1.如何不间断地执行某一方法?
2.如何替换显示的时间文本?
解决:Kivy为我们提供了一个Clock类,通过Clock.schedule_interval()方法可以指定每隔多少秒执行一次对应的函数,例如:
表示每5秒执行一次update_time()方法,如果需要不间断执行,只需要把5改成0即可。
Clock.schedule_interval(self.update_time,5)
在Kivy中,每个布局或者小部件都可以为其指定一个ID属性,通过ID可以获取到该布局或者部件,例如:
获取一个ID为time_label_id的部件,可以使用下面代码:
self.ids.time_label_id
设置计算器的显示时间:
通过计时器部件的ID(time_label_id)获得.kv文件中的Label标签后,再为其设置text属性。具体main.py文件内容如下:
from time import strftime
from kivy.app import App
from kivy.clock import Clock
from kivy.uix.boxlayout import BoxLayout
class ClockBoxLayout(BoxLayout):
#初始化
def __init__(self,**kwargs):
super().__init__(**kwargs)
self.on_start()
def on_start(self):
#不间断执行update_time()方法
Clock.schedule_interval(self.update_time,0)
def update_time(self,nap):
#通过ID获取time_label_id控件,并设置text属性值。
self.ids.time_label_id.text=strftime('[b]%H[/b]:%M:%S')
#继承App类
class ClockApp(App):
def build(self):
return ClockBoxLayout()
if __name__ == '__main__':
#设置页面背景
from kivy.core.window import Window
Window.clearcolor = [.8,.8,.8,1]
ClockApp().run()
执行main.py,结果如下图:
上一篇:手动实战——计时器:基本布局
下一篇:手动实战——计时器:开始计时