レイアウト2 (formLayout と tabLayout)

formLayout と tabLayout

ここでは pm.formLayout() と、 pm.tabLayout() の使用方法を練習してみましょう。
pm.formLayout() はレイアウトの中で最も自由がきくもので、 ウインドウの上下左右からの絶対位置や、 他の部品からの相対位置によって部品を配置することができます。
pm.tabLayout() はタブを作成することができます。 この関数を実行すると、 それ以降の部品・レイアウトはタブグループになり、 1 つのタブになってゆきます。

formLayout と tabLayout の使用例

まず、pm.formLayout() によってタブの部分と 閉じる ボタンを配置し、pm.tabLayout() によって A・B ボタンのあるタブと C・D ボタンのあるタブを切替えることができるようにしてみましょう。

  1. 以下の Python スクリプトを layout5.py という名前で作ります。
    import pymel.core as pm
    
    with pm.window(title='formLayout1') as windowName:
        with pm.formLayout() as form:
            with pm.tabLayout() as tabs:
                with pm.columnLayout() as tab1:
                    pm.button(label='A')
                    pm.button(label='B')
                with pm.columnLayout() as tab2:
                    pm.button(label='C')
                    pm.button(label='D')
            
            tabs.setTabLabel([tab1, u'タブ1'])
            tabs.setTabLabel([tab2, u'タブ2'])
            
            form.attachForm(tabs, 'top',    0)
            form.attachForm(tabs, 'left',   0)
            form.attachForm(tabs, 'right',  0)
            form.attachForm(tabs, 'bottom',  30)
    
            closeButton = pm.button(label=u'閉じる', command=pm.Callback(pm.deleteUI, windowName.name()))
            form.attachForm(closeButton, 'bottom', 0)
            form.attachForm(closeButton, 'left',   0)
            form.attachForm(closeButton, 'right',  0)
            form.attachControl(closeButton, 'top', 2, tabs)
    
  2. スクリプト エディタ の ファイル → スクリプトのロード によって layout5.py を読み込んで、テンキーの Enter キーなどで実行します。
  3. 以下のウインドウが表示されます。
    各ボタンには関数を割り当てていないので押しても何も実行されません。
    [layout5.melの実行結果 タブ1] [layout5.melの実行結果 タブ2]

スクリプトの解説

import pymel.core as pm
pymel.core モジュールをインポートしてpmという名前で使用できるようにします。
with pm.window(title='layout5') as windowName:
ウインドウを layout5 というタイトルで作ります。
form = pm.formLayout()
formLayout を作ります。
with pm.tabLayout() as tabs:
tabLayout を作ります。
作られた tabLayout は後で pm.formLayout() 関数や pm.tabLayout() 関数で使用するので変数 tabs に代入しておきます。
tabs.setTabLabel([tab1, u'タブ1'])
タブのラベルを変更しています。
1つ目のタブ(tab1)に タブ1 というラベルを付けます。
tabs.setTabLabel([tab2, u'タブ2'])
2 つ目のタブ(tab2)に タブ2 というラベルをつけます。
form.attachForm(tabs, 'top', 0)
タブ(tabs)の上辺はウインドウ上辺から 0 ピクセルの位置にします。
form.attachForm(tabs, 'left', 0)
タブ(tabs)の左辺はウインドウ左辺から 0 ピクセルの位置にします。
form.attachForm(tabs, 'right', 0)
タブ(tabs)の右辺はウインドウ右辺から 0 ピクセルの位置にします。
form.attachForm(tabs, 'bottom', 30)
タブ(tabs)の下辺はウインドウ下辺から 30 ピクセルの位置にします。
closeButton = pm.button(label=u'閉じる', command=pm.Callback(pm.deleteUI, windowName.name()))
ウインドウを閉じるためのボタンを作ります。
form.attachForm(closeButton, 'bottom', 0)
タブ(tabs)の上辺はウインドウ上辺から 0 ピクセルの位置にします。
form.attachForm(closeButton, 'left', 0)
タブ(tabs)の左辺はウインドウ左辺から 0 ピクセルの位置にします。
form.attachForm(closeButton, 'right', 0)
タブ(tabs)の右辺はウインドウ右辺から 0 ピクセルの位置にします。
form.attachControl(closeButton, 'top', 2, tabs)
ボタン(closeButton)の上辺はタブ(tabs)の下辺から 2 ピクセルの位置にします。
全体のレイアウト 全体のレイアウト

練習

まとめ

参考


Prev | Next
Home | Contents
Mail