python - 包装器的循环参数要求

标签 python algorithm python-2.x maya

我正在尝试将监听器附加到窗口关闭时销毁的窗口对象。

但是,窗口对象没有通过单击 X 关闭调用的 OnClose 类型方法(它是 Autodesk Maya 的 pymel.core.uitypes.Window 如果你很好奇为什么)。

add_listener 创建一个存在于事件 session 中的监听器。 attach_listener 我创建的目的是让监听器在窗口关闭时自行删除,并且需要附加一个窗口。

我的解决方案如下:

def attach_listener(window, event_name, function):
    def wrapper(*args, **kwargs):
        if window.exists():
            return function(*args, **kwargs)
        else:
            remove_listener(id_number)
    id_number = add_listener(event_name, wrapper)

这显然是行不通的,因为 id_number 直到函数声明后才定义,但是,如果不先定义它,我就无法将函数传递给 add_listenerid_number 无法传递给 add_listener。我该怎么做才能解决这个问题?

最佳答案

你可以试试这种方法:

def attach_listener(window, event_name, function):
    def wrapper(*args, **kwargs):
        if window.exists():
            return function(*args, **kwargs)
        else:
            remove_listener(wrapper.id_number)
    wrapper.id_number = add_listener(event_name, wrapper)

关于python - 包装器的循环参数要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10304431/

相关文章:

Python:将元组转换为逗号分隔的字符串

python - 根据父列表将值分组到列表中

python - 正切 x 的反正切未精确计算

python - PyQt5 关闭后从 Qdialog 窗口获取值到主窗口

c# - 如何在不重新排列数组元素的情况下计算数组中的唯一数字?

php - 如何从嵌套对象构建嵌套数组?

Python:引用unicode字符串索引的正确方法

python - Python 中的 GString

python - 如何从字符串中取出字母并将它们变成整数?

c - 将取消引用的指针的地址传递给字符串偏移量