Clock.schedule_interval没有安排回调

时间:2017-05-24 14:08:07

标签: kivy python-3.4

我正在测试kivy.clock.Clock.schedule_interval函数的功能。

我的schedule_interval没有调用测试函数,而是退出而没有任何错误。

我不理解的是什么?我已经通过文档正确地模拟了这个测试。

from kivy.clock import Clock

class TestClass:

    def __init__(self):
        print("function __init__.")
        schedule = Clock.schedule_interval(self.test, 1)

    def test(self, dt):
        print("function test.")

if __name__ == '__main__':
    a = TestClass()

预期输出应为:

function __init__.
function test.
function test.
function test.
function test.
function test.
function test.

相反,我只是得到:

function __init__.

1 个答案:

答案 0 :(得分:3)

主要问题是你的程序在一秒钟之前退出。我不确定,但我也认为必须有一个kivy应用程序才能使时钟工作(我试图制作一个空的while循环而不是运行应用程序,但这没有帮助)。

这是一个提供所需输出的简单修复:

from kivy.clock import Clock
from kivy.base import runTouchApp


class TestClass:
    def __init__(self, **kwargs):
        print("function __init__.")
        schedule = Clock.schedule_interval(self.test, 1)

    def test(self, dt):
        print("function test.")


if __name__ == '__main__':
    test = TestClass()
    runTouchApp() # run an empty app so the program doesn't close

否则,请考虑将TestClass继承自kivy的App并使用TestClass().run()运行 - 您将获得相同的结果。