
클럭 이벤트 2 (clock events) - schedule_interval()
메서드 schedule_interval은 schedule_interval을 호출한 이후 설정한 callback 메서드 또는 함수를 일정한 주기로 반복 실행시키고자 할 때 사용한다.
메서드 schedule_interval은 클래스 CyClockBase 내에 정의되어 있는 메서드이다.
def schedule_interval(self, callback, timeout)
화면 왼쪽 및 오른쪽에 버튼을 표시하는 애플리케이션에,

클래스 MyApp 내 메서드 Build에서 schedule_interval 메서드를 호출하여 1초 주기로 my_clock_callback 메서드가 실행되게 한다.
import kivy
kivy.require('2.0.0')
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.button import Button
from kivy.clock import Clock
class ScreenLayout(GridLayout):
def __init__(self, **kwargs):
GridLayout.__init__(self, **kwargs)
self.cols = 2
self.button1 = Button(text='Button 1')
self.add_widget(self.button1)
self.button2 = Button(text='Button 2')
self.add_widget(self.button2)
class MyApp(App):
def build(self):
self.clock_event = Clock.schedule_interval(self.my_clock_callback, 1)
return ScreenLayout()
def my_clock_callback(self, dt):
print('my clock callback', dt)
if __name__ == '__main__':
MyApp().run()
위의 코드를 실행하면, 파이참 출력창에 1초 주기로 my clock clallback x.xxx 문구가 표시된다.
메서드 schedule_interval의 timeout 값은 0.5와 같이 float 값으로 ms를 표현할 수 있다.

메서드 schedule_interval에 의해 반복적으로 실행되는 메서드 또는 함수의 실행을 중지하고자 한다면,
아래와 같이 메서드 schedule_interval에 의해 생성된 ClockEvent 객체에 대하여 cancel 메서드를 사용하거나,
(my_clock_callback 메서드 내에 cancel()을 호출하여 my_clock_callback이 한번만 호출하게 함)
def my_clock_callback(self, dt):
print('my clock callback', dt)
self.clock_event.cancel()
Clock.unschedule 메서드를 사용하거나,
def my_clock_callback(self, dt):
print('my clock callback', dt)
Clock.unschedule(self.clock_event)
또는 호출되는 callback 메서드 또는 함수에서 False를 반환한다.
def my_clock_callback(self, dt):
print('my clock callback', dt)
return False
'코딩 > 파이썬 kivy' 카테고리의 다른 글
| kivy 스터디 011. 위젯 이벤트 (widget events) - Button & on_touch_down 메서드 (0) | 2021.07.25 |
|---|---|
| kivy 스터디 010. 클럭 이벤트 3 (clock events) - create_trigger() (0) | 2021.07.21 |
| kivy 스터디 009. 클럭 이벤트 (clock events) 1 - schedule_once() (0) | 2021.07.18 |
| [kivy-008] Kv 디자인 언어(design language)를 이용한 GUI 설계 (0) | 2021.07.08 |
| [kivy-007] Kivy 클래스 프라퍼티 (0) | 2021.07.07 |