ON-BLOG

CGのこと、あれこれ書いてます。

Pyside勉強 その四

いままでのツールで一点おかしな部分があります。
それはウィンドウがMAYA画面の後ろにいってしまう点です。
なんでこんなことがおきるんでしょうか?

その原因はMAYAのウィンドウがPySideで
作成されているのが、起因になっています。
前の記事でも書いてますが
PySideは継承してUIを作成していきます、
そのため、MAYAウィンドウを継承せずに
UIを生成すると、MAYAウィンドウと生成UIが
並列になることになる為、裏側にUIがいってしまいます。
こんな感じでUIが立ち上がるが
f:id:tommy_on:20190417231628p:plain
MAYAのウィンドウの適当なところをクリックすると
f:id:tommy_on:20190417231706p:plain
裏にいってしまい消えてしまいます。

これを回避するため、MAYAウィンドウを継承してあげます。
やりかたは簡単です。

from maya.app.general import mayaMixin

をインポートして、クラスの第一引数に

mayaMixin.MayaQWidgetBaseMixin

を指定してあげるだけです。

こんな感じ↓

#-'''- coding: utf-8 -'''-
from PySide.QtCore import *
from PySide.QtGui import *
from maya.app.general import mayaMixin

class Form(mayaMixin.MayaQWidgetBaseMixin,QDialog):

    def __init__(self, parent=None):
        super(Form, self).__init__(parent)
        self.edit = QLineEdit("Your Name???")
        self.button = QPushButton("Push!!!")
        layout = QVBoxLayout()
        layout.addWidget(self.edit)
        layout.addWidget(self.button)
        self.setLayout(layout)
	
        self.button.clicked.connect(self.greetings)

    def greetings(self):
        print ("Hello", self.edit.text())

if __name__ == '__main__':
    form = Form()
    form.show()

実行してもらえばわかりますが
ウィンドウが後ろにいかなくなっています。
これはQDialogがMayaウィンドウの子どもになっているからです。
簡単ですね。
以降のスクリプトではこの記述は、必須ですね。

以上です。