環境
Windows11 Home 21H2
Maya2022.2
質問内容
現在、タブの数をユーザーが可変的にコントロールできるUIをtabLayoutで作成しています。
増やしたタブを消すために、「tabsClosable」フラグをtrueにしたところまでは無事に機能しました。(公式のサンプルより下記コードと図1)
window -widthHeight 200 150;
string $form = `formLayout`;
string $tabs = `tabLayout -innerMarginWidth 5 -innerMarginHeight 5 -tc true`;
formLayout -edit
-attachForm $tabs "top" 0
-attachForm $tabs "left" 0
-attachForm $tabs "bottom" 0
-attachForm $tabs "right" 0
$form;
string $child1 = `rowColumnLayout -numberOfColumns 2`;
button; button; button;
setParent ..;
string $child2 = `rowColumnLayout -numberOfColumns 2`;
button; button; button;
setParent ..;
tabLayout -edit
-tabLabel $child1 "One" -tabLabel $child2 "Two"
$tabs;
showWindow;
↑図1
しかし、「closeTabCommand」フラグで同時に何かコマンドを実行しようとすると、そのコマンドは実行されるもののタブは消えなくなってしまいました。(下記コードと図2)
proc test_tabClose(){
print "Closed!!";
}
window -widthHeight 200 150;
string $form = `formLayout`;
string $tabs = `tabLayout -innerMarginWidth 5 -innerMarginHeight 5 -tc true -ctc "test_tabClose();"`;
formLayout -edit
-attachForm $tabs "top" 0
-attachForm $tabs "left" 0
-attachForm $tabs "bottom" 0
-attachForm $tabs "right" 0
$form;
string $child1 = `rowColumnLayout -numberOfColumns 2`;
button; button; button;
setParent ..;
string $child2 = `rowColumnLayout -numberOfColumns 2`;
button; button; button;
setParent ..;
tabLayout -edit
-tabLabel $child1 "One" -tabLabel $child2 "Two"
$tabs;
showWindow;
↑図2
このような挙動になる原因と解決法を教えていただきたいです。
解決済! 解決策の投稿を見る。
回答者: SOTOMEA. 解決策の投稿を見る。
こんにちは。
closeTabCommand ですが、調べたところMaya本体の以下のファイルの3470行目でも使われているみたいです。
C:\Program Files\Autodesk\Maya2022\scripts\startup\scriptEditorPanel.mel
3470行目:
-closeTabCommand "removeExecuterTab( #1, #2 )"
"removeExecuterTab"の中を見ると、タブを閉じる処理も書かれているようなので、このプロシージャを参考にするとよいかもしれません。
ご指摘いただいた箇所のコードを参考にして、レイアウトの子をこちらで指定してdeleteUIから削除するという処理によって解決することができました。
ありがとうございました。
お探しの情報が見つからないときは、コミュニティで質問しましょう。困っている人がいたら、情報を教えてあげましょう。