Python 2.7 在调用另一个函数后调用该函数

Python 2.7 在调用另一个函数后调用该函数,python-2.7,listener,ableton-live,Python 2.7,Listener,Ableton Live,我正在使用基于Python的API为Ableton Live 8编程一个控制器。在我的代码中,我使用API中提供的方法监视属性值的变化,并在值发生变化时调用函数。我的目标是在注意到值更改时更改剪辑的颜色 我已经完成了我的代码,并且它编译没有错误。从Ableton的日志中: 742234 ms. RemoteScriptError: RuntimeError 742234 ms. RemoteScriptError: : 742234 ms. RemoteScriptError: Changes

我正在使用基于Python的API为Ableton Live 8编程一个控制器。在我的代码中,我使用API中提供的方法监视属性值的变化,并在值发生变化时调用函数。我的目标是在注意到值更改时更改剪辑的颜色

我已经完成了我的代码,并且它编译没有错误。从Ableton的日志中:

742234 ms. RemoteScriptError: RuntimeError
742234 ms. RemoteScriptError: : 
742234 ms. RemoteScriptError: Changes cannot be triggered by notifications
742234 ms. RemoteScriptError: 
这似乎是由于在通知期间使用内置通知系统对活动集进行了更改。在侦听函数完成执行后触发实际更改应该是可行的。这是否可以使用Python实现

编辑以澄清:

目前我们有

  • 已注意到值更改,已调用函数
  • 函数尝试更改剪辑颜色(导致错误)
  • 我们需要

  • 侦听器注意到值更改,调用了函数
  • 函数查找新的颜色值
  • 函数执行结束
  • 另一个函数在侦听器的作用域之外调用,并更改剪辑的颜色

  • 我在M4L中做了很多工作,并把这个错误牢记在心:) 恐怕你对此无能为力——在我看来,它就像一个内置的安全机制,所以你不能循环(改变了什么?改变它!改变了什么…)

    在M4L中,我使用Javascript任务来分隔步骤(任务几乎忘记了一切), 差不多

    观察者->改变了什么

    创建一个有反应的任务

    task.execute()或task.schedule(时间)

    也许python线程模块可以实现类似的功能?
    顺便说一句,如果您碰巧了解关于_Framework-Tasks的任何信息,请告诉我。

    我在M4L中做了很多工作,并且牢记了这个错误:) 恐怕你对此无能为力——在我看来,它就像一个内置的安全机制,所以你不能循环(改变了什么?改变它!改变了什么…)

    在M4L中,我使用Javascript任务来分隔步骤(任务几乎忘记了一切), 差不多

    观察者->改变了什么

    创建一个有反应的任务

    task.execute()或task.schedule(时间)

    也许python线程模块可以实现类似的功能?
    顺便说一句,如果您碰巧了解有关_Framework-Tasks的任何信息,请告诉我。

    我在尝试从剪辑停止侦听器中删除曲目时遇到了相同的问题,然后我找到了此线程并遵循@user233980的建议。
    每个框架类上似乎都有一个处理任务间并发性的“\u tasks”对象(我通过ClipSlotComponent和ControlSurface中的log\u消息找到了它)。而且使用起来非常简单:

    self.\u tasks.add(Task.run(func,args))


    我在Push和MK2脚本中发现了它的一些用途,这些都是很好的参考资料。

    我在尝试从剪辑停止侦听器中删除曲目时遇到了相同的问题,然后我找到了此线程并遵循@user23980建议。
    每个框架类上似乎都有一个处理任务间并发性的“\u tasks”对象(我通过ClipSlotComponent和ControlSurface中的log\u消息找到了它)。而且使用起来非常简单:

    self.\u tasks.add(Task.run(func,args))


    我在Push和MK2脚本中发现了它的一些用途,这些都是很好的参考资料。

    我对Abelton Live一无所知,但我想如果通知无法进行修改,那么会有一些API允许您将稍后发生的事情排队(一旦通知结束)。我在任何地方都找不到API的文档,所以我不能说得更具体。可以使用Max For Live API中的函数来实现这一点,但我正在尝试在这之外工作。我想我需要创建自己的侦听器,并观察对全局变量的更改。我不知道Abelton Live的任何信息,但我猜如果通知无法进行修改,那么会有一些API允许您将稍后发生的事情排队(一旦通知结束)。我在任何地方都找不到API的文档,所以我不能说得更具体。可以使用Max For Live API中的函数来实现这一点,但我正在尝试在这之外工作。我想我需要创建自己的监听器,并观察对全局变量的更改。我怀疑在没有M4L的情况下我是否可以挂接Javascript,这有点违背了在Python中构建它的目的。真倒霉我猜关于“安全机制”你是对的。似乎AL在侦听器对Live模块的某些部分进行更改时遇到了问题。从(非常)简单的检查来看,它看起来可能与用于保存集合的文件的内容有关,尽管这对我来说没有多大意义……我怀疑我在没有M4L的情况下是否可以连接到Javascript,这有点违背了用Python构建此文件的目的。真倒霉我猜关于“安全机制”你是对的。似乎AL在侦听器对Live模块的某些部分进行更改时遇到了问题。从(非常)简单的检查来看,它看起来可能与用于保存集合的文件的内容有关,尽管这对我来说没有多大意义。。。