클럭 이벤트 3 (clock events) - create_trigger()
메서드 create_trigger는 호출하는 횟수에 관계없이 설정한 메서드 또는 함수를 한번만 실행시키고자 할 때 사용한다.
메서드 create_trigger의 매개변수 정의는 다음과 같다.
def create_trigger(self, callback, timeout=0, interval=False, release_ref=True)
아래의 코드를 실행하면, my_clock_callback 메서드는 3번 실행된다.
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_once(self.my_clock_callback, 0)
self.clock_event = Clock.schedule_once(self.my_clock_callback, 0)
self.clock_event = Clock.schedule_once(self.my_clock_callback, 0)
return ScreenLayout()
def my_clock_callback(self, dt):
print('my clock callback', dt)
if __name__ == '__main__':
MyApp().run()
하지만 create_trigger 메서드를 사용하면, my_clock_callback 메서드는 1번 만 실행된다.
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.create_trigger(self.my_clock_callback)
self.clock_event()
self.clock_event()
self.clock_event()
return ScreenLayout()
def my_clock_callback(self, dt):
print('my clock callback', dt)
if __name__ == '__main__':
MyApp().run()
'코딩 > 파이썬 kivy' 카테고리의 다른 글
kivy 스터디 012. kivy 프라퍼티 이벤트 (property event) - ListProperty 이벤트 (0) | 2021.07.26 |
---|---|
kivy 스터디 011. 위젯 이벤트 (widget events) - Button & on_touch_down 메서드 (0) | 2021.07.25 |
kivy 스터디 010. 클럭 이벤트 2 (clock events) - schedule_interval() (0) | 2021.07.20 |
kivy 스터디 009. 클럭 이벤트 (clock events) 1 - schedule_once() (0) | 2021.07.18 |
[kivy-008] Kv 디자인 언어(design language)를 이용한 GUI 설계 (0) | 2021.07.08 |