Pyside勉強 その四
いままでのツールで一点おかしな部分があります。
それはウィンドウがMAYA画面の後ろにいってしまう点です。
なんでこんなことがおきるんでしょうか?
その原因はMAYAのウィンドウがPySideで
作成されているのが、起因になっています。
前の記事でも書いてますが
PySideは継承してUIを作成していきます、
そのため、MAYAウィンドウを継承せずに
UIを生成すると、MAYAウィンドウと生成UIが
並列になることになる為、裏側にUIがいってしまいます。
こんな感じでUIが立ち上がるが
MAYAのウィンドウの適当なところをクリックすると
裏にいってしまい消えてしまいます。
これを回避するため、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ウィンドウの子どもになっているからです。
簡単ですね。
以降のスクリプトではこの記述は、必須ですね。
以上です。