外部GUIの図書館にユーザーインターフェースでAutodesk Maya
質問
私は開発ツールAutodesk Maya.多くのツールを構築し簡単なウィンドウのGuiのアニメーターおよび具を利用します。これらのGuiが含まだ通常とに見ると、基礎窓;ラベル、リスト、メニューボタンtextfields。しかし、限りがあるの複雑性を模索することで作ることができるのツールを利用でき、具体的には、種類をご用意ります。
に興味がある私にとってのより高度なwxPythonウィジェットなどのListViewグリッド、ツリー、等。このような利用の完全にwxFrame(ウィンドウ表示のUIは、基本的にこのウィンドウ間に縛られMaya.そのブレーカーですが、実行するために、Mayaが極小に抑え、ウィンドウん。
ったようなものを事前に本人にとtkinterのテストが見ることが必要度だけメインループ処る独自のねじになります。この論理が、自分の場合、紛争とのマヤの独自のスレッドが、基本的に、作りハマヤまでのウィンドウが閉じます。このように"Maya走るすべてのスクリプトにとってメやPythonでは、単一のスレッドの摩耶GUI株とする。これは一つのスクリプトからも削除するオブジェクトがスクリプトあるいは同じオブジェクトです。
wxPythonは、この一度だけメインループ処"methodolgy.私は疑問が生じた場合の方法でできるような仕事をマヤ?
解決
くなった場合は考慮がgooglingがるPyQtで人気の内部摩耶.きみの技術 こちらの または こちらの (説明 こちらの ソースコード)の新しいthreadloop経由マヤには、実行中とのこと。そうでヤは、モジュールに含まれるセットの新しいスレッドオブジェクトは、QApplication内で
def initializePumpThread():
global pumpedThread
global app
if pumpedThread == None:
app = QtGui.QApplication(sys.argv)
pumpedThread = threading.Thread(target = pumpQt, args = ())
pumpedThread.start()
しを設定する機能を処理し、Qtイベント:
def pumpQt():
global app
def processor():
app.processEvents()
while 1:
time.sleep(0.01)
utils.executeDeferred( processor )
できるのではないでしょうか何かに似wxPythonしています。(utils.executeDeferredはマヤ機能です。) チェックしてみてください作成方法 非ブロックのGUI のwxPython wiki.の代わりにprocessEvents()まだ設定のイベントループやチェックのための"申請中"のイベント内の死に名称変更?) pumpQt機能です。(WxPython源 Python実施 の度だけメインループ処.) ることにのみ行うことができるアプリです。利回り()関数が、本当のところはわからないけど。
def pumpWx():
global app
def processor():
app.Yield(True)
while 1:
time.sleep(0.01)
utils.executeDeferred( processor )
def initializePumpThread():
global pumpedThread
global app
if pumpedThread == None:
app = wx.App(False)
pumpedThread = threading.Thread(target = pumpWx, args = ())
pumpedThread.start()
のwxPython docs 表示SafeYield() が好ましい。このような第一歩が必要な場合はこちらでの仕事だけではなくクラッシュ決.(あるか議論したいことを wxPythonメーリングリスト だから干のバージョン(wxます。) がありますのでご利用ください(表示の様々なフォーラムではこの技術の問題にキーボードで入力します。きものをご利用ください:
def processor():
while app.Pending(): app.Dispatch()
の電流のリストです。
幸運を祈っています。
他のヒント
私は、知りません。
しかし、パイプまたはセマフォのようなプロセス間通信のいくつかの手段があります。多分実際のプラグイン、Mayaにタイトであること、およびGUIのための別のアプリケーションにあなたのマヤの拡張子を分割するためのオプションです。これら二つは、プラグインと、GUIの間で通信するためにそのような手段を使用して交換モデル情報ができました。 それは非常に多くのアプリケーションを複雑にするので、私は本当にこのアプローチをお勧めすることができます場合、私は、しかし、よく分からない。
あなたは開発チームのwxPythonでそれを統合するにいくつかの努力を入れているIPython、インタラクティブPythonシェル、見ている可能性があります。彼らはイベントループを中断し、自分のものを行うためにそれをフックのいくつかの方法があります。
行くための最善の方法は、あなたが必要なものではQWidgetを作成し、C ++のAPIを通してたMPxCommandの中からそれを使用しています。そのように、あなたもscriptedPanelsを経由してMayaに完全なカスタムエディタを注入するチャンスがあります。
しかし、あなたは、Pythonにバインドされている場合は、PyQtはを移動するための方法である。