kivy modalview滞后on_open在动画完成之前执行回调

时间:2019-01-23 12:13:59

标签: callback kivy lag modal-view

我使用绑定到modalview的on_open属性的回调函数启动modalview实例:

myoverlay=ModalView(on_open=mycallback)

如果mycallback不需要花费明显的时间来执行,这将按预期工作。我的意思是,我看到在myoverlay.open()上立即弹出模态视图窗口。但是,当mycallback包含非即时呼叫时,例如

def mycallback():
    os.system("mount " + device + " /mount/point/path -o uid=me,gid=me")

然后,模态视图的出现明显滞后于myoverlay.open()之后。看起来on_open会在modalview动画自身出现之前触发。回调似乎阻止了modalview的动画。因此,该应用看起来很迟钝/没有响应。

我的“肮脏”解决方案是使回调像这样自延迟:

def mycallback(dt=0):
    if dt: # delayed call scheduled by itself
        os.system("mount " + device + " /mount/point/path -o uid=me,gid=me")
    else: # initial call
        Clock.schedule_once(mycallback, 0.5) # half a second delay to allow for animation to complete

我的问题是:是否有一种更清洁的方法来停止modalview(表观)延迟,例如通过某种方式将回调绑定到modalview动画的on_complete属性?或者,通过使回调函数成为非阻塞函数(我该怎么做?)

0 个答案:

没有答案