2016-12-08 11 views
0

私は、そのMayaシーンに何があっても即座に生成されるPySideウィンドウを持つMaya環境を持っています。私は今、それをコマンドラインに取り込み、ユニットテストを作成しようとしています。unittest PySideとMayaをコマンドライン上で動作させるには

私はすべての問題を取り除いています。このようなはQApplicationを作成する ほとんどのPyQt/PySide unittestのドキュメントの状態:

app = QApplication(sys.argv) 
win = SomeWindow() 
sys.exit(app.exec_()) 

マヤから構築はQApplicationインスタンスが、すでにありますので、これは動作しません。

収率は、このエラーとテストが失敗してもこれらの手順を除く
RuntimeError: A QApplication instance already exists. 

QWidget: Cannot create a QWidget when no GUI is being used 

私は、このコマンドははQApplicationのインスタンスを生成するためにはQApplicationのインスタンスは、シーンでありますことを知っている:

QApplication.instance() 

これで、作成したいGUIをそのインスタンスにどのように関連付けることができますか? Mayaが実行しているQApplicationをexec_()することはできないので、QApplicationを見るためにGUIを取得する方法がわかりません。 _

答えて

0

解決策が見つかりました。問題は、すべてのテストで同じインスタンスへのグローバル参照を保持していないことでした(複数のMayaファイルが作成されている/何度も破壊されていた)。

だから、どこかにファイルの先頭に、あなただけのシングルトンとしてそれはQApplicationインスタンスへのリンクを保持し、別のファイルをインポートし、それ

に等しいAPPを設定し、各テストに続いて

APP = None 

を書きます

+0

問題を解決してマークしてください:) – darkgaze