ウィンドウを閉じたときに破棄されるウィンドウオブジェクトにリスナーをアタッチしようとしています。ラッパーの円引数の必要条件
しかし、ウィンドウオブジェクトには、Xをクリックして呼び出すタイプのOnClose
タイプのメソッドがありません(理由は興味がある場合はAutodesk Mayaの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)
関数が宣言された後、しかし、私はそれを最初に定義せずadd_listener
に関数を渡すことはできませんまでid_number
が定義されていないので、これは明らかに動作しません。 id_number
はadd_listener
に渡すことはできません。これを回避するにはどうすればよいですか?
を残念ながら、マヤは、Python 2.6で動作しますので、 'nonlocal'は存在しません。 – TorelTwiddler