Я пытаюсь подключить слушателя к объекту окна, который уничтожается при закрытии окна.Требование о круговом аргументе для обертки
Однако объект окна не имеет метода типа OnClose
, который вызывается нажатием кнопки X, чтобы закрыть (это Autodesk Maya's pymel.core.uitypes.Window
, если вам интересно, почему).
add_listener
создает слушатель, который существует в активной сессии. 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
. Что мне делать, чтобы обойти это?
К сожалению, Майя работает в Python 2.6, так что 'nonlocal' не существует. – TorelTwiddler