如何使用可消费的kivy时钟?

时间:2017-11-26 17:58:28

标签: python kivy kivy-language

我试图在kivy中构建一个简单的秒表,并且我想使用interruptible clock来正确创建一个跟踪1/100秒的间隔(正常时钟不是&# 39;看起来足够准确)。但我无法弄清楚如何正确整合interruptible clock

我试着阅读并尝试了这个

class TimerApp(App):
    def build_config(self, config):
        config.setdefaults('section1', {
            'KIVY_CLOCK': 'interrupt'
        })

    def build(self):
        config = self.config
        return AppLayout()
然而,这似乎并没有改变Clock.schedule_interval的功能。什么是正确的方法,以及如何验证设置是否已更改?

1 个答案:

答案 0 :(得分:1)

以下示例尝试描述差异:

通知:我将此测试的超时设置为1秒(1000毫秒)

使用默认设置:

from kivy.app import App
from kivy.clock import Clock
from kivy.uix.boxlayout import BoxLayout
import time

t = int(round(time.time() * 1000)) #current time in millisecond


def call_back(dt):
    global t
    t1 = int(round(time.time() * 1000))
    print t1 - t
    t = t1

clock = Clock.schedule_interval(call_back, 1)


class TimerApp(App):

    def build(self):
        return BoxLayout()

if __name__ == '__main__':
    TimerApp().run()

输出是:

1002
1003
1006
1004
1006
1005
1004
1001
1003
1002
1003

正如您所见,输出总是(几乎)> 1000毫秒

使用中断配置:

...
from kivy.config import Config

...
class TimerApp(App):

    def build(self):
        Config.set('graphics', 'KIVY_CLOCK', 'interrupt')
        Config.write()
        return BoxLayout()
...

,输出为:

997
998
1000
1000
998
998
1000
1001
1000