【问题标题】:Function "on_complete" called before "completed" on kivy app with plyer在带有 plyer 的 kivy 应用程序上“完成”之前调用的函数“on_complete”
【发布时间】:2016-04-25 19:23:13
【问题描述】:

又是我! 嗯,这真的很奇怪。 我正在使用 kivy 为 Android 制作应用程序。 我可以使用相机,但或应用程序重置或做一些奇怪的事情。 这是问题所在:

def chamar_camera(nome,pc,objeto,label_passa,instance): agora = datetime.now() nome_arquivo = '%s_%s_%.4i_%.2i_%.2i_%.2i_%.2i_%.2i.jpg' % (nome,pc,agora.year,agora.month,agora.day,agora.hour,agora.minute,agora.second) # Option 1 - These two lines work: #def sair():print 'oi' #camera.take_picture(nome_arquivo, sair) # Option 2 - These two lines work too: def sair(label_passa,nome_arquivo):print 'oi' camera.take_picture(nome_arquivo,on_complete=sair(label_passa,nome_arquivo)) # Option 3 - But these don't: #def sair(label_passa,nome_arquivo):label_passa.text = nome_arquivo #camera.take_picture(nome_arquivo, on_complete=sair(label_passa,nome_arquivo)) def on_pause(self):return True def on_resume(self):pass

在选项 3 上,我在标签小部件 (label_passa) 上写了一个文本 (nome_arquivo),但是会发生的是在激活相机之前写了文本。所以相机出现了,我可以拍照并重新启动应用程序。我也尝试了一个“def sair(): pass”,但这不起作用。唯一有效的是“打印”,但在我的应用程序上,我需要在该标签中写一些东西并更新一个 sqlite 数据库。知道为什么在相机动作之前调用该函数吗? 谢谢!

【问题讨论】:

    标签: android python kivy


    【解决方案1】:

    on_pauseon_resume 应该定义为您的 App 类的方法,而不是(如您在此处)在 chamar_camera 函数中本地定义的函数。

    【讨论】:

    • 我说是因为我没有更多的想法,但问题仍然是一样的,不管有没有这两行。
    • 我的 App 类也有这两行。
    • 一项改进:
       def chamar_camera(nome,pc,media,objeto,label_passa,instance): agora = datetime.now() nome_arquivo = '%s_%s_%.4i_%.2i_ %.2i_%.2i_%.2i_%.2i.jpg' % (nome,pc,agora.year,agora.month,agora.day,agora.hour,agora.minute,agora.second) def sair(label_passa, instance): label_passa.text = '' camera.take_picture(nome_arquivo, on_complete=partial(sair,label_passa))  现在app没有重启,使用相机后调用函数,但第一次使用该应用程序在相机后重新启动,然后就没有了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多