这个论点来自哪里?

时间:2015-03-04 11:38:23

标签: python kivy

编辑:显然我不是很清楚。我真的不知道发生了什么,所以我不知道要具体要求什么。我的问题是小睡如何得到它的论点,而我没有指定一个。 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

1 个答案:

答案 0 :(得分:3)

update未直接调用,但通过Clock.schedule_interval(self.update, 0)时钟安排。这会自动将参数传递给与上次调用时间相对应的函数,在本例中称为nap

由于调用之间的时间设置为0,因此每个帧都会调用该函数,nap最终应该是大约1/60。

为了进行比较,如果您将其更改为Clock.schedule_interval(self.update, 1),您会发现nap总是大约1 ...但不完全是1,因为很小(或者如果主线程被阻止,当框架被推动时波动很大。