2017-06-30 18 views
0

を再実行した後、私はそれが正常に動作し、オートデスクマヤ2015年のためのUIウィンドウ私はMayaのスクリプトエディタ内のスクリプトを実行するたびに作られている、UIは、Mayaのメインウィンドウ上で適切にドックを立ち上げ、それを取得します。マヤUIませんドッキングスクリプト

ただし、UIウィンドウを閉じてスクリプトを再実行すると、ウィンドウはもうドッキングしません。それはメイン画面で立ち往生し、私はソフトウェア全体を閉じる必要があります。初めてUIを閉じるとUIがメインのMaya Windowを見つけられなくなったようです。私はこれをどのように修正するか分からない。誰も私にこの問題を解決する方法のいくつかのアドバイスを与えることができますか?

def getMayaWindow(): 
    ptr = apiUI.MQtUtil.mainWindow() 
    if ptr is not None: 
     return shiboken.wrapInstance(long(ptr), QtGui.QMainWindow) 

class pipeWindow(formClass,baseClass): 
    def __init__(self, parent=getMayaWindow()): 
     super(pipeWindow,self).__init__(parent) 

     self.setupUi(self) 
     self.setObjectName('pipe_window') 

     try: 
      cmds.deleteUI('dockPane') 
     except: 
      pass     
     self.pane = cmds.paneLayout('dockPane', cn='single') 

     if 'pipeDock' not in cmds.lsUI(ctl=1) : 
      cmds.dockControl('pipeDock', con=self.pane, area='right', 
           allowedArea = ['right','left'], label = 
          "ANMD_Pipeline", w=365)    
     else: 
      pass 
     cmds.control('pipe_window', e=True, p=self.pane) 
+0

formClassとbaseClassの実装を見てみると便利です(私はそれらがPySide UIだと思います)。複数の継承が難しい場合があります(慣れていない場合はhttps://stackoverflow.com/a/3277407/8200213をご覧ください)。また、 'pipeWindow'構造体全体が私には分かりません。PySideのUI(親フォームのフォームクラス)を親ウィンドウに親しますが、' paneLayout'を 'dockControl'に渡します。どうすればいいのですか?最初の裁判でさえ、仕事。現在のソリューションについて貴重でない場合は、 'MayaQWidgetDockableMixin'を使用することを検討してください。さもなければコードをさらに説明してください – mapofemergence

答えて

0

複数のものを試した後、私はこの問題を解決するために管理している:

は、ここに私のコードです。私はその後、私はcloseEvent関数内super(className, self).closeEvent(event)を持って

if cmds.dockControl('pipeDock', q=1, ex=1): 
    cmds.deleteUI('pipeDock') 

を使用していました。これは私のためのトリックでした。これは私のためのトリックでした。以前は私のcmds.deleteUIが私のcloseEventの機能の中で動作しませんでしたが、私はイベント自体を閉じなかったためだと思うので、削除する代わりに十字ボタンを押すたびにUIが隠れるだけです。

関連する問題