ウインドウの作り方

Python における GUI と簡単なウインドウ

Maya におけるウインドウやメニューなどの GUI は MEL スクリプトによって作られていますが、 Python スクリプトによっても GUI のカスタマイズ・独自メニューの作成ができるようになります。

これから、 Python 関数や自作の関数を操作するオリジナル GUI を作ってゆきましょう。
今回は簡単なスクリプトなので、プロシージャを宣言しないで スクリプト エディタ で読み込むと、すぐに実行できるように関数をそのまま並べて作ってゆきます。
以下のスクリプトは スクリプト エディタ のメニュー ファイル → スクリプトのロード で読み込んで実行してください。

ウインドウの作り方

ウインドウを作るには maya.cmds.window() 関数を使用します。
ただし、ウインドウを実際に表示するためには、maya.cmds.window() 関数に visible=True をつけて実行するか、この関数の後で maya.cmds.showWindow() 関数を実行します。

スクリプトの解説

import maya.cmds
maya.cmds モジュールをインポートします。
maya.cmds.window(title='window1')
ウインドウバーに window1 というタイトルが表示されたウインドウを作成します。
ただし、この時点では画面には表示されません。
window() 関数も sphere() 関数などと同じく作られたオブジェクト(ウインドウ)の名前を返します。 このスクリプトでは返されたウインドウの名前は使っていませんが、必要ならば変数に代入しておき、 後で使うこともできます。
なお、title の後ろの window1 はタイトルであってウインドウの名前ではないので注意してください。
maya.cmds.showWindow()
window 関数で作られたウインドウを表示します。
この関数を忘れるとウインドウが表示されません。

ボタンのついたウインドウ

ウインドウにボタンなどを配置してゆくには、レイアウトコマンドが必要です。
レイアウトコマンドとはコントロールと呼ばれる部品(ボタンやスライダーなど)をどのような方法で並べるかを決めるためのものです。
レイアウトコマンドには他にも様々な種類がありますが、 上から順番に並べてゆくだけなら以下のように maya.cmds.columnLayout() を使用します。

スクリプトの解説

import maya.cmds
maya.cmds モジュールをインポートします。
maya.cmds.window(title='window2')
ウインドウバーに window2 というタイトルが表示されたウインドウを作成します。
ただし、この時点では画面には表示されないことに注意してください。
maya.cmds.columnLayout()
レイアウトコマンドの実行します。
この関数の後に配置される GUI の部品(ここでは button())は縦1列に並べられます。
この関数から showWindow までの間に必要な GUI 部品を作る関数を実行してゆきます。
GUI の部品をウインドウに配置してゆく時にはレイアウトコマンドが必ず必要です。
maya.cmds.button()
ボタンを 1 つ作ります。
ここではボタンを押した時に実行する関数を割り当てていないので押しても何も実行されません。
ボタン上のラベルには、何も指定されていなければ button1 などのボタンの名前が表示されます。
maya.cmds.showWindow()
window() 関数で作られたウインドウを表示します。
この関数を忘れるとウインドウが表示されません。

ボタンに関数を割り当てる

ボタンが押された時などに特定の関数を実行させるためには command フラグを使用します。

スクリプトの解説

import maya.cmds
maya.cmds モジュールをインポートします。
maya.cmds.window(title='window3')
ウインドウバーに window3 というタイトルが表示されたウインドウを作成します。
ただし、この時点では画面には表示されません。
maya.cmds.columnLayout()
レイアウトコマンド。
この関数の後に実行される GUI の部品(ここでは button())は縦1列に並べられます。
maya.cmds.button(label='sphere', command='maya.cmds.sphere()')
ボタンを1つ作ります。
このボタンを押すと command の後にある文字列(' から次の ' まで)を実行します。 ここでは maya.cmds.sphere() 関数が実行されて NURBS の球体が作られます。
command の後では Python 関数だけでなく自分で作った関数も実行できます。
また、2つ以上の複数の関数を実行することもできます。 (下の練習問題を参照してください)
labelの後にある文字列 'sphere' がボタンの上に表示されるラベルになります。
maya.cmds.showWindow()
window() 関数で作られたウインドウを表示します。
この関数を忘れるとウインドウが表示されません。

練習

まとめ

参考


Prev | Next
Home | Contents
Mail