我正在尝试将监听器附加到窗口关闭时销毁的窗口对象。
但是,窗口对象没有通过单击 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_listener
。 id_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/