2016-12-02 61 views
0

是否有延迟on_release的方式:在.kv文件操作Kivy on_release:延迟或等待.kv文件中的功能?

代码:

on_press: inpexpr.source = root.calculate(entry.text) 
on_release: outpexpr.source = root.displ(entry.text) 
on_release: root.clear() 

我要延迟root.clear()

例如

on_press: inpexpr.source = root.calculate(entry.text) 
on_release: outpexpr.source = root.displ(entry.text) 
on_release: wait x seconds -> root.clear() 

这是理想的,它给出了以前的on_release:调用displ()方法,完成的时间为root.clear()取决于在dis中创建一个文件pl()方法,以删除文件。看来,on_release:root.clear()正在执行太快。

这里如何实现时间延迟?

+0

退一步来说,即时通讯目前正试图调用从KV文件的另一种方法,该方法里面会有一个kivy.Clock时间延迟,再经过时间量X调用不同于clear()方法。但是,如果有任何方法可以在.kv文件中实际执行,请告诉我。 –

回答

0

您可以使用Clock来设置仅调度一次的事件,或者甚至可以使用例如间隔每5秒呼叫root.ping()

from kivy.lang import Builder 
from kivy.base import runTouchApp 
from kivy.uix.boxlayout import BoxLayout 
Builder.load_string(''' 
#:import Clock kivy.clock.Clock 
<Test>: 
    Button: 
     on_release: Clock.schedule_once(root.ping, 3) 
    Button: 
     on_release: Clock.schedule_interval(root.ping, 5) 
''') 
class Test(BoxLayout): 
    def ping(self, args): 
     print('ping', args) 
runTouchApp(Test())