2017-05-24 3 views
0

私はkivy.clock.Clock.schedule_interval関数の機能をテストしています。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__. 

答えて

2

主な問題は、1秒のパスの前に、あなたのプログラムが終了するということです。私は確信していませんが、私はクロックが動作するようにkivyアプリがなければならないと仮定しています(アプリを実行する代わりにループを空にしようとしましたが、それは役に立たなかった)。

はここで所望の出力を与える簡単な修正です:

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 

は、そうでない場合kivyのAppからTestClass継承を作り、TestClass().run()でそれを実行することを検討 - あなたは同じ結果を実現します。

+0

この説明はありがとうございます。両方の方法で動作します。 –

関連する問題