Python 包装器的循环参数要求
我试图将侦听器附加到窗口对象,该对象在窗口关闭时被破坏 但是,窗口对象没有单击X以关闭时调用的Python 包装器的循环参数要求,python,algorithm,python-2.x,maya,Python,Algorithm,Python 2.x,Maya,我试图将侦听器附加到窗口对象,该对象在窗口关闭时被破坏 但是,窗口对象没有单击X以关闭时调用的OnClosetype方法(如果您想知道原因,它是Autodesk Maya的pymel.core.uitypes.window) add_listener创建活动会话中存在的侦听器附加\u侦听器我创建的目的是在窗口关闭时使侦听器删除自身,并要求附加一个窗口 我的解决办法如下: def attach_listener(window, event_name, function): def wrap
OnClose
type方法(如果您想知道原因,它是Autodesk Maya的pymel.core.uitypes.window
)
add_listener
创建活动会话中存在的侦听器<代码>附加\u侦听器我创建的目的是在窗口关闭时使侦听器删除自身,并要求附加一个窗口
我的解决办法如下:
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\u number
是没有定义的,但是,如果不先定义它,我就无法将函数传递给add\u listener
<代码>id\u编号无法传递到添加\u侦听器
。我该怎么做才能避免这种情况?嘘:\
你可以用以下方法破解它;我想这会有用的
def attach_listener(window, event_name, function):
IDlist = []
def wrapper(*args, **kwargs):
if window.exists():
return function(*args, **kwargs)
else:
remove_listener(IDlist[0])
IDlist.append(add_listener(event_name, wrapper))
这不是最优雅的方式,但它应该能起作用。。。。
如果它不让我知道。您可以尝试这种方法:
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)
不幸的是,Maya在Python2.6中运行,因此不存在
非本地
。