0
我目前正在努力充分利用Kivy的时钟不安排操作。按下某个键时,我正在为回调分配一个时间表。我已经完成了执行计划的回调,但是我也希望做的是一旦按下了一个键,它不仅会启动回调,还会取消任何现有的回调。我的问题是,虽然我编码了一个event.cancel(),但事件并没有被取消。整个程序有点大,但我可以显示直接使用时钟的代码。Kivy时钟未修正问题
def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
event0 = Clock.create_trigger(lambda dt: self.pressHome(), 3)
event1 = Clock.create_trigger(lambda dt: self.selectFig(coord = 'A2'), 2)
event2 = Clock.create_trigger(lambda dt: self.selectFig(coord = 'A3'), 4)
if keycode[1] == 'd':
coord = 'A3'
self.selectFig(coord)
event1()
event2()
event0.cancel()
elif keycode[1] == 'f':
coord = 'A4'
self.selectTxt(coord)
event1.cancel()
event2.cancel()
event0()
有效!为什么触发器需要在构造函数中?尽管它们最初是在_on_keyboard_down中创建的,但是它们在事件()激活之前不会被调用。 – 12edd
因为您需要取消相同的事件,而不是每次调用** _on_keyboard_down **方法时创建的新事件 –