忍者ブログ
2017/12/14

【MAYA】Maya2015からはshiboken使わなくてもいいらしい

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

2015/08/18

【MAYA】Maya2015からはshiboken使わなくてもいいらしい

Maya PySide まとめ - 水深1mm

↑このブログの記事を発見して、どうやらMAYA2015からはshibokenを使わなくてもMAYAのウインドウの後ろにPySideウインドウが行かないように出来るらしいぞ、という事が判明。

ふむふむ。
なにやらMayaQWidgetBaseMixinってものを読み込んでますね。。
ただ、試してみたところサンプルコードではうまく動作しませんでした。
更にちょこっとググってみると、以下のページにヒット。

http://help.autodesk.com/view/MAYAUL/2016/ENU/?guid=__files_GUID_66ADA1FF_3E0F_469C_84C7_74CEB36D42EC_htm

どうやら、GUIのクラスを作る際にMayaQWidgetBaseMixinも継承しないといけないようです。
それを反映したコードが以下。
# -*- coding: utf-8 -*-
from PySide import QtCore, QtGui
from maya.app.general.mayaMixin import MayaQWidgetBaseMixin

#OKってボタンが表示されるだけのUI
class GUI(MayaQWidgetBaseMixin, QtGui.QWidget):
    def __init__(self, parent=None):
        super(GUI, self).__init__(parent=parent)
        self.layout = QtGui.QVBoxLayout()
        self.setLayout(self.layout)
        self.okButton = QtGui.QPushButton('OK')
        self.layout.addWidget(self.okButton)

if __name__ == '__main__':
    app = QtGui.QApplication.instance()
    ui = GUI()
    ui.show()
    sys.exit()
    app.exec_()

MAYA2014以前のshibokenを利用した方法は色々な方が書かれてます
(いつもながらホントお世話になっております)

Maya2012でPyside-ウィンドウを後ろにいかせない - hiros-log
[Maya] Designerで作った.uiをMayaで使用する [PySide] | Reincarnation+

ちなみに、MAYA2015ではshibokenをインポートする際、
from Shiboken.shiboken import wrapInstance

ではエラーが出てしまうので、
from shiboken import wrapInstance

としないといけないらしい。
後は、UIを描画する際に良く見るサンプルコードで
app = QtGui.QApplication(sys.argv)
ui = GUI()
ui.show()
sys.exit(app.exec_())

という風に書かれてるんだけど、以下のようにしないと動かないらしい。
app = QtGui.QApplication.instance()
ui = GUI()
ui.show()
sys.exit()
app.exec_()

シンプルなコードなのに動かないなーって時間かけてググってたらたどり着いた答え。
なぜかはよく分かりません。

MAYA2014までだったら正常に動くんだろうか、、、、
うむむ、、、まだまだ分からないことが多いっすねorz

拍手[1回]

PR

コメント

プロフィール

HN:
モチオ
性別:
非公開
自己紹介:
テクニカルアーティスト(アニメーション出身)サポート対象Softimage/MotionBuilder/Mayaなど 言語 javascript / PHP / Python / VBAなど Webアプリも少しだけ作れる

P R