CREATIVE MEMO | クリエティブ・メモ

PySide組み込み方

巷ではPyQtさんが、PySideはゴニョゴニョ・・と発表したのでPysideは今後どうなっていくのかなぁという感じですが、ここで各DCCツールでのPysideの使用方法を記します。
ソースが汚いのと細かい説明は省いているのはご了承ください。
加えて、紹介するには不要な文までありますが・・・
変数 toolpypath はpythonフォルダまでのフォルダパスです。

◆Maya
先ずはPysideなどモジュールのインポート色々
MayaのバージョンによってPythonバージョンも使い分けます。

import pymel.core as pm
import maya.cmds as cmds
import maya.mel as mm
from maya import OpenMayaUI as omui
from modules.mayaDataInfo import MayaDataInfo
sys.path.append(os.path.join(toolpypath,r’Python27′))
sys.path.append(os.path.join(toolpypath,r’Python26\Lib\site-packages\PySide-1.1.3dev-py2.6.egg’))
appliCheck = str(cmds.about(product=True))
if int(appliCheck[-4:]) < 2014:
sys.path.append(os.path.join(toolpypath,r'Python26\PySide'))
else:
sys.path.append(os.path.join(toolpypath,r'Python27\Lib\site-packages\PySide-1.2.1-py2.7-win32.egg'))

sys.path.append(os.path.join(toolpypath,r'Python27\Lib\site-packages\ordereddict-1.1'))
import ordereddict
import shiboken
from ctypes.wintypes import MAX_PATH
from PySide import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

.uiファイルから.pyにGUIを変換したものをインポート

from DML_testGUI import Ui_MainWindow

実行文。色々書き方はありますが、私的にはこれがベター。
Mayaアプリケーションの後ろにウィンドウが隠れないので便利です。

mayaWindowP = omui.MQtUtil.mainWindow()
mayaWindow = shiboken.wrapInstance(long(mayaWindowP), QtGui.QWidget)
mainWindow = QtGui.QMainWindow(parent=mayaWindow)
if cmds.window(‘mainWindow’,ex=True) == 1:cmds.deleteUI(‘mainWindow’)
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
mainWindow.show()

◆MotionBuilder

先ずはPysideなどモジュールのインポート色々

from pyfbsdk import *
from pyfbsdk_additions import *
sys.path.append(os.path.join(toolpypath,r’Python27′))
sys.path.append(os.path.join(toolpypath,r’Python26\Lib\site-packages\PySide-1.1.3dev-py2.6.egg’))
appliCheck = str(FBSystem().ApplicationPath)
sys.path.append(os.path.join(toolpypath,r’Python26\PySide’))
sys.path.append(os.path.join(toolpypath,r’Python27\Lib\site-packages\ordereddict-1.1′))
if int(str(FBSystem().ApplicationPath).split(“MotionBuilder “)[1][0:4]) < 2014:
sys.path.insert(0,os.path.join(toolpypath,r'tk-motionbuilder-master\resources\pyside112_py26_qt470_win64_vs2010'))
import ordereddict
from PySide import QtUiTools
from ctypes.wintypes import MAX_PATH
from PySide import QtCore, QtGui

try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s

try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

from DML_testGUI import Ui_MainWindow

実行文。色々書き方はありますが、私的にはこれがベター。
MotionBuilderアプリケーションの後ろにウィンドウが隠れないので便利です。

top_level_windows = QtGui.QApplication.topLevelWidgets()
for w in top_level_windows:
if (type(w) == QtGui.QWidget
and len(w.windowTitle()) > 0
and w.parentWidget() == None):
mainWindow = QtGui.QMainWindow(parent=w)
ui = Ui_MainWindow()
ui.setupUi(mainWindow)
mainWindow.show()

◆Windows
先ずはPysideなどモジュールのインポート色々

from PySide import QtCore, QtGui

try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s

try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)

from DML_testGUI import Ui_MainWindow

実行文

app = QtGui.QApplication(sys.argv)
mainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(mainWindow)
mainWindow.show()
sys.exit(app.exec_())

MotionBuilderは情報が少ないので、どう使うんだーとお困りの方はお役立て下さい。
NukeやAfterEffects版はまた今度ー。

What do you think of the post?
いいね (2)
«

トラックバック:0

この記事のトラックバック URL
http://www.dml.co.jp/creative_memo/3892/trackback/
トラックバックの送信元リスト
PySide組み込み方 - 株式会社デジタル・メディア・ラボ より
やさいのようせいThe Moive
ライセンス・ラボ

ページ上部へ戻る