【发布时间】:2015-05-05 09:12:26
【问题描述】:
编辑:显然我不是很清楚。我真的不知道发生了什么,所以我不知道具体要问什么。我的问题是小睡如何得到它的论点,而我没有指定一个。 Inclement 明白我的意思,所以我想现在已经回答了。
这可能很愚蠢,但我真的不明白更新的“小睡”参数(在“更新”中)来自哪里。编辑:(我的意思是它从哪里接收它的价值)。
“更新”仅从(编辑:通过)“on_start”调用,没有其他地方。
class ClockApp(App):
sw_started = False
sw_seconds = 0
def on_start(self):
Clock.schedule_interval(self.update, 0)
def update(self, nap):
if self.sw_started:
self.sw_seconds += nap
self.root.ids.time.text = strftime('[b]%H[/b]:%M:%S')
m, s = divmod(self.sw_seconds, 60)
self.root.ids.stopwatch.text = (u'{0:02d}:{1:02d}.[size=40]{2:02d}[/size]'
.format(int(m), int(s), int(s * 100 % 100)))
def start_stop(self):
self.root.ids.start_stop.text = 'Start' if self.sw_started else 'Stop'
self.sw_started = not self.sw_started
def reset(self):
if self.sw_started:
self.root.ids.start_stop.text = 'Start'
self.sw_started = False
self.sw_seconds = 0
【问题讨论】:
-
update在on_start中未被“调用”。它只是传递给函数。它在schedule_interval中调用或传递给另一个函数并在那里调用。这是nap传入的地方。 -
什么意思,你不明白
nap是从哪里来的?我不明白你的问题。您确实将self.update, 作为参数传递给函数,但实际上并没有调用它 -
如前所述,
self.update作为参数传递给schedule_interval。您需要检查schedule_interval方法以了解如何从那里调用self.update方法。 -
我不认为这个问题不清楚 - 原始发布者不明白为什么更新方法会收到一个参数,因为他没有手动指定一个参数,答案是(就像已经说过)它由时钟在内部调用,此时它会自动包含此参数。
-
@AustinMullins
Clock.schedule_once的代码和文档可在线获取(github.com/kivy/kivy 和 kivy.org/docs)。这个问题没有什么不清楚的,我们只是让对 Kivy 一无所知的人来决定这个问题是否不清楚。