Maya Python学習の決定版セミナーを開催します!
【初心者向け】やさしく学ぶ Maya Python
~入門から実践的なツール作成まで~
https://shop.cgworld.jp/shopdetail/000000001227/
2025年5月9日(金)~6月6日(金)※毎週金曜日(全5回) 18:00-21:00
開催場所:オンライン
「Mayaのスクリプトを書けるようになりたいけど、どこから始めればいいのか分からない…」
そんな初心者の方に向けた、5日間の集中講座を開催します!
🔹 初心者にやさしく、分かりやすい解説で基礎からしっかり学べる!
🔹 実務で本当に必要な知識がまとまっているので、スムーズに学べる!
ワークショップ形式でツール作成を実践&その場でフォローもあるから安心です
🔹 AIを活用したツール開発&学習法も学べる!
この講座で学べば、実務で役立つツールを作れるようになり、作業を大幅に効率化できるでしょう!
独学ではなかなか身につけにくいMaya Pythonの基本を、この機会にぜひ習得してください。
こんにちは!ビーバー@ゲーム業界歴約20年 です。maya python初心者の方のために、カンタン・わかりやすい解説サイトを作っています。
maya pythonの学習情報って少ないですよね。
自分が骨を折った経験をもとに、maya python基礎を最速で習得できる10回のチュートリアル
を作ってみたので参考にしていただければ幸いです。
今回は、10回目。GUIを作り、ボタンにスクリプトを登録する方法を学びます。

※当サイトで紹介する商品は、アフィリエイトプログラムを利用しています。
スクリプト例
下記のようなスクリプトを例に説明をしていきます。
import mayapy08
reload(mayapy08)
cmds.window("myTools")
cmds.rowColumnLayout( numberOfColumns=2, columnWidth=[(1, 150), (2, 150)] )
cmds.button(label="spiralCone" , command="mayapy08.spiralCone()")
cmds.text(label="spiralConeを実行します")
cmds.button()
cmds.text(label="ボタンの説明")
cmds.showWindow()
このスクリプトを実行すると、図のようなウィンドウができます。

ボタンには、9限目で作成した、mayapy08.pyモジュールの spiralCone() 関数を登録してみました。
「spiralCone」というボタンを押すと、関数が実行され、コーンがらせん状に並びます。


GUIを構成するコマンドの解説
それでは、どのようにGUIを作るのか、詳しく見ていきましょう。
GUIは下記のようなコマンドを組み合わせて作成します。
- ウィンドウを作成、表示、閉じる
- ボタンを横に並べるレイアウトを作る
- ボタンを等間隔で横に並べたレイアウトを作る
- 横にも縦にもボタンを並べるレイアウトを作る
- テキストを表示する
- ボタンクリックで関数を実行する
ウィンドウを作成、表示、閉じる操作
ウィンドウを作成、表示、閉じる操作は下記3つのコマンドで行います。
cmds.window(“ウィンドウ名”)
カラのウィンドウを作成します。表示はしないので注意!
cmds.showWindow(“ウィンドウ名”)
ウィンドウを表示します。
cmds.deleteUI(“ウィンドウ名”)
ウィンドウを閉じるコマンドです。
cmds.window()
cmds.showWindow()
cmds.deleteUI("window1")


これはわかりやすいな、
window()で作成、showWindow()で表示、deleteUI()は消すコマンドだね!


図のような「~~が固有ではありません」っていうエラーが出るときに
deleteUI(“ウィンドウ名”) を実行するといいよ。
ボタンを横に並べるレイアウトを作る
ウィンドウに何かを表示させたい場合は、レイアウトを作りましょう。
ボタンを横にならべたレイアウトを作るには、rowLayout()で横並びのレイアウトを作成し、
button()と続けることで、レイアウトの中にボタンを配置することができます。
cmds.rowLayout()
子を水平一列に配置できるレイアウトを作成します。
numberOfColumnsフラグで横にならべる子の数を指定できます。
cmds.button()
ボタンを作成します。
cmds.window("myTools")
cmds.rowLayout(numberOfColumns=3)
cmds.button()
cmds.button()
cmds.button()
cmds.showWindow()

ボタンを等間隔で横に並べたレイアウトを作る
今度は、レイアウトとボタン幅を指定して、ボタンを等間隔に並べてみましょう。
レイアウト幅はrowLayout()の、columnWidth3フラグで指定できます。
ボタン幅はbutton()の、widthで指定します。
cmds.window("myTools")
cmds.rowLayout( numberOfColumns=3, columnWidth3=(110, 110, 110))
cmds.button(width=100, label="tes01")
cmds.button(width=100, label="tes02")
cmds.button(width=100, label="tes03")
cmds.showWindow()


cmds.rowLayout( numberOfColumns=3, columnWidth3=(110, 110, 110))

columnWidth3=(110, 110, 110)は、
3つのレイアウト幅を左から順番に指定してるんだね。


横にも縦にもボタンを並べるレイアウトを作る
ボタンを縦横に並べるにはどうすればいいのでしょう?
それには、rowColumnLayout() というコマンドを使います。
numberOfColumnsというフラグで、水平方向の子の数を指定し、
columnWidthフラグでレイアウトの幅を個別に指定できます。
cmds.rowColumnLayout()
レイアウトの縦横の並びを指定することができます。
cmds.window("myTools")
cmds.rowColumnLayout( numberOfColumns=2, columnWidth=[(1, 150), (2, 150)] )
cmds.button()
cmds.button()
cmds.button()
cmds.button()
cmds.button()
cmds.showWindow()

cmds.rowColumnLayout( numberOfColumns=2, columnWidth=[(1, 150), (2, 150)] )

numberOfColumns=2 だから、水平2列にならべるレイアウトってことだね。
1列目も2列目も、幅は150に指定しているよ。
テキストを表示する
ボタンではなく、単にテキストを表示したい場合は、text()を使います。
cmds.text(“○○○○”)
テキストを作成します。
cmds.window("myTools")
cmds.rowColumnLayout( numberOfColumns=2, columnWidth=[(1, 150), (2, 150)] )
cmds.button()
cmds.text(label="ボタンの説明")
cmds.button()
cmds.text(label="ボタンの説明")
cmds.showWindow()

>> ユーザが入力できる「テキストフィールド」を入れたい方はこちら
ボタンクリックで関数を実行する
ボタンに関数を埋め込むステップは2つです。
- モジュールを読みこむ
- ボタンに関数を埋め込む
モジュールを読みこむ
モジュール化した関数をボタンに埋め込むには、あらかじめモジュールを読んでおく必要があります。
モジュール側が更新されていた場合に備えて、リロードも入れておきましょう。
ここでは、mayapy08というモジュールを読みこみます。
モジュールの読み込み
import ○○○○(モジュール名)
モジュールのリロード
reload(モジュール名)
>> モジュールの保存、呼び出しはこちらで詳しく説明しています
import mayapy08
reload(mayapy08)
cmds.window("myTools")
cmds.rowColumnLayout( numberOfColumns=2, columnWidth=[(1, 150), (2, 150)] )
cmds.button(label="spiralCone" , command="mayapy08.spiralCone()")
cmds.text(label="spiralConeを実行します")
cmds.button()
cmds.text(label="ボタンの説明")
cmds.showWindow()


モジュールを修正しながら何度も実行する場合は、reloadを入れておくと便利だね。

reload()はpython2系の書き方で、
python3以降では、書式が異なるから注意してね。
ボタンに関数を埋め込む
続いて、ボタンに関数を埋め込みます。
関数の埋め込みは、button()の commandフラグで行います。
cmds.button( command = “モジュール名.関数名” )
ボタンクリック時に実行する関数を指定します。
cmds.button(label="spiralCone" , command="mayapy08.spiralCone()")

ちなみに、モジュール化していない普通の関数の埋め込みもできるよ。
例えば、nurbsサークルを作成するコマンドをボタンに仕込むとしたら、、



わあ!サークルができたよ!
いろんな機能を持たせたボタンを作れるね!


最後に、もう一度スクリプトをおさらいします。
import mayapy08
reload(mayapy08)
cmds.window("myTools")
cmds.rowColumnLayout( numberOfColumns=2, columnWidth=[(1, 150), (2, 150)] )
cmds.button(label="spiralCone" , command="mayapy08.spiralCone()")
cmds.text(label="spiralConeを実行します")
cmds.button()
cmds.text(label="ボタンの説明")
cmds.showWindow()
importでモジュールを読みこみ、
window()でウィンドウを作成し、rowColumnLayout()でレイアウトを指定、
レイアウトの上に button() と text() でボタンとテキストを配置しました。
ボタンに関数を埋め込むのは、button()のcommandフラグで関数を指定します。
スクリプト実行でできたウィンドウはこちら↓

ボタンには、9限目で作成した、mayapy08.pyモジュールの spiralCone() 関数が登録されています。
「spiralCone」のボタンクリックで、関数が実行されます。


まとめ
今回学習した内容のポイントをまとめます。
- window()、showWindow()、deleteUI()コマンドで
ウィンドウの生成、表示、削除を行う - ウィンドウにボタンを表示するには、レイアウトを作成する
rowLayout()、rowColumnLayout()コマンドなど - button()コマンドでボタンを作成
- text()コマンドでテキストを作成
- importで読みこんだモジュールは、reload()でリロードを行うことができる
- button()コマンドの commandフラグでボタンにスクリプトを埋め込む

GUIを作ったら、スクリプトをシェルフに登録しておこう!
すぐに呼び出せて便利だよ。
これでmaya python10回シリーズが完結しました!
ここまでお読みいただいた皆さん、本当にありがとうございます。
以降は、maya pythonのいろんなtipsを紹介していこうと思います。
引き続き読んでいただけると幸いです。
maya pythonでGUIを作る方法をもっと知りたい方はこちら。
cmdsで作る方法・PySideの紹介・PySideのかんたんなチュートリアルをまとめています。
PySideを使うときに必要になる、「クラス」についても徹底解説!
本サイトの【まとめ】 maya python 基礎 入門!では、
10回シリーズでmaya pythonの基礎が習得できるコンテンツを発信しています。
- ちまたのスクリプトを読んで、内容を理解したい
- mayaのスクリプトリファレンスの読み方を習得したい
- 自分で簡単なツールを書きたい
- 基礎的なmayaコマンドをpythonで使えるようになりたい
など、mayaでpython基礎を身に着けたい方は、ぜひご活用ください♪
オススメの本。pythonが楽しく学べます☆


復習はこちら↓
コメント