PySideでGUIを作る簡単な方法です。
PySideのQtDesignerを使えば、MayaのGUIを簡単に作ることができます。
またMayaQWidgetBaseMixinを使うことで余計なことを考えることなくGUIも作れちゃいます。
便利なものを組み合わせてお手軽にGUIを作っちゃいましょう!
管理人がYouTubeで解説!
PySideをインストールする
pip install pyside
これでインストールできますが、Pythonの設定周りがよくわからない!って方は以下を参考にすると良いでしょう。
環境変数PATHを設定する | Python入門 – Let’sプログラミング
pipが使えるようになる…というのもプログラムわからん時代の私にはハードル高かったので…。
Maya2020がPython27なのでPython27でPySideをインストールしましょう。
無事インストールできたら、Python27\Lib\site-packages\PySideの中にdesigner.exeが存在します。
そもそもPySideって何よ?って方はWikiを参照下さい。
PySide – Wikipedia – ウィキペディア
今回作ったサンプルコード
# -*- coding: utf-8 -*-
import os
from maya import cmds
from PySide2 import QtWidgets
from PySide2.QtUiTools import QUiLoader
from maya.app.general.mayaMixin import MayaQWidgetBaseMixin
# designer.exeで作ったUIファイルを取得する
CURRENT_FILE = os.path.normpath(__file__)
path, ext = os.path.splitext(CURRENT_FILE)
UI_FILE = path + ".ui"
class TRSConnectorWindow(MayaQWidgetBaseMixin, QtWidgets.QMainWindow):
def __init__(self, *args, **kwargs):
super(TRSConnectorWindow, self).__init__(*args, **kwargs)
# 作ったUIファイルをロードして変数に入れる
self.widget = QUiLoader().load(UI_FILE)
self.setWindowTitle(self.widget.windowTitle())
# QMainWindowの中央のウィジェットに入れる
self.setCentralWidget(self.widget)
# ボタンとのコネクションを作る
self.widget.pb_t.clicked.connect(self.clicked_connect_translate)
self.widget.pb_r.clicked.connect(self.clicked_connect_rotate)
self.widget.pb_s.clicked.connect(self.clicked_connect_scale)
def clicked_connect_translate(self): # 移動を接続する関数
src, dst = cmds.ls(os=True)
cmds.connectAttr("{}.translate".format(src), "{}.translate".format(dst))
def clicked_connect_rotate(self): # 回転を接続する関数
src, dst = cmds.ls(os=True)
cmds.connectAttr("{}.rotate".format(src), "{}.rotate".format(dst))
def clicked_connect_scale(self): # スケールを接続する関数
src, dst = cmds.ls(os=True)
cmds.connectAttr("{}.scale".format(src), "{}.scale".format(dst))
コメント