2016-03-19 10 views
1

ボタンがあります。それを押すと、5秒後に1つのアクションを呼び出し、その後1秒ごとに2回目のアクションを無限に呼び出すようにしたい。しかし、私はアクションが完了した後に初めてアクション2を開始する必要があります。Kivyで2つのクロックスケジュールを制御する際の問題

マイコード:

#!/usr/bin/kivy 
import kivy 
kivy.require('1.7.2') 

from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.screenmanager import ScreenManager, Screen 
from kivy.uix.button import Button 
from kivy.clock import Clock 
from functools import partial 

Builder.load_string(''' 
<MenuScreen>:    
    Button: 
     id:timer1 
     text: 'click me' 
     on_press: root.val() 
''') 
class MenuScreen(Screen): 
    def val(self): 
     Clock.schedule_once(self.my_callback_timer1, 5) 
     Clock.schedule_interval(self.my_callback_timer2, 1) 
    def my_callback_timer1(self, interval): 
     print "5 sec code executed" 
    def my_callback_timer2(self, interval): 
     print "1 sec code executed" 


sm = ScreenManager() 
menu = MenuScreen(name='menu') 
sm.add_widget(menu) 

class MainApp(App): 
    def build(self): 
     return sm 

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

これは、ように、p/oを提供します:

1 sec code executed 
1 sec code executed 
1 sec code executed 
1 sec code executed 
5 sec code executed 
1 sec code executed 
... 
... 

と何が必要です:

5 sec code executed 
(wait 5 sec) 
1 sec code executed 
1 sec code executed 
1 sec code executed 
... 

答えて

0

スケジュール最初のコールバックで第2のクロック:

class MenuScreen(Screen): 
    def val(self): 
     Clock.schedule_once(self.my_callback_timer1, 5) 

    def my_callback_timer1(self, interval): 
     print "5 sec code executed" 
     Clock.schedule_interval(self.my_callback_timer2, 1) 
    def my_callback_timer2(self, interval): 
     print "1 sec code executed" 
+0

ありがとう...私はすでにそれを理解しました...あなたの返信と同じ方法... :) –

関連する問題