私は良いタイトルを考えるのに苦労したので、ここで説明します。私はいくつかのイベントコールバックオプションを持つMayaでPythonを使用していますので、on save: run function
のようなことができます。私はユーザーインターフェイスクラスを持っていますが、これは特定のイベントがトリガされたときに更新することができますが、これを行うためのよりクリーンな方法を探しています。 Mayaが再起動されるまでクラス内の現在の値を使用してコールバックを使用して関数を実行する
class test(object):
def __init__(self, x=0):
self.x = x
def run_this(self):
print self.x
def display(self):
print 'load user interface'
#Here's the main stuff that used to be just 'test().display()'
try:
callbacks = [callback1, callback2, ...]
except NameError:
pass
else:
for i in callbacks:
try:
OpenMaya.MEventMessage.removeCallback(i)
except RuntimeError:
pass
ui = test(5)
callback1 = OpenMaya.MEventMessage.addEventCallback('SomeEvent', ui.run_this)
callback2 = OpenMaya.MEventMessage.addEventCallback('SomeOtherEvent', ui.run_this)
callback3 = ......
ui.display()
コールバックが解消されないが、あなたはそれをaddEventCallback
から返された値を渡した場合、あなたはそれがremoveCallback
を使用して削除することができます。
は、ここで私が持っているものに似て基本的な例です。私が現在行っている方法は、設定する前に変数が設定されているかどうかをチェックするだけです。これは前の1行よりもずっと面倒です。test().display()
私は関数でうまくいく方法がありますか?私がtest
クラスをやり直すか、それとも似たようなものを実行すれば、古いものを削除するか?
だから、同じ関数を(同じ時刻に)実行するために複数のコールバックを登録したいのではないでしょうか? – 101
いいえ、別々のコールバックをイベント毎に持っていますが、イベントごとに1つしかありません。 – Peter