事实上,在这个问题上,我有两个问题:
-
当我想使用“for loop”在短时间内显示重置时间值时,为什么它总是在循环运行过程中显示最后一个时间值-零值(在时间重置之前)?
-
如何再次显示时间倒计时前一段时间内的重置时间值?
现在我可以解决第二个问题,但我仍然不知道为什么“for循环”延迟代码不起作用。
为了再次显示时间倒计时前一段时间内的重置时间值,我更新了.py文件,如下所示,
from kivy.app import App
from kivy.clock import Clock
from kivy.properties import ObjectProperty
from kivy.uix.tabbedpanel import TabbedPanel
from kivy.uix.boxlayout import BoxLayout
from time import strftime
class Test(TabbedPanel):
pass
class ClockTest(BoxLayout):
time_str = ObjectProperty()
tm_interval = 5 # 5 seconds
tm_flag = True
tm = tm_interval
def __init__(self, **kwargs):
super(ClockTest, self).__init__(**kwargs)
Clock.schedule_interval(self.cb, 0)
def delayset(self, cb, dt):
Clock.schedule_once(cb, dt)
def delaycb(self, dt):
self.tm_flag = True
def cb(self, dt):
if self.tm_flag:
self.tm -= dt
if self.tm <= 0:
self.tm = self.tm_interval
print('tm: ', self.tm)
self.tm_flag = False
self.delayset(self.delaycb, 3)
m, s = divmod(self.tm, 60)
self.time_str.text = ('%02d:%02d.%02d' %
(int(m), int(s), int(s * 100 % 100)))
class ClockTest1App(App):
def build(self):
tm_obj = Test()
return tm_obj
if __name__ == '__main__':
ClockTest1App().run()