私はマヤのためのpythonでUIを作成している、と私は私のユーザーインターフェイスに多くのrowColumnLayout
(タブ)を持っているtabLayout
を使用しています。それぞれのタブでは、上部の部分にはすべてのタブで同じであるが、正しく更新されないため、各タブにインスタンスが重複することなく、Master
が必要です。つまり、あるタブで何かを変更すると、他のタブでは更新されません。ここでマヤUI - すべてのタブでマスター
は私の問題の簡単な例ですが、私はそれぞれのタブで機能MasterTab
を使用しています:
import maya.cmds as cmds
def ChangeText(*arg) : cmds.text('thatText', edit=True, label='Bye')
def MasterTab(*arg) :
cmds.button(label='Press Me', command = ChangeText)
cmds.text('thatText', label='Hello')
cmds.window(widthHeight=(200, 150))
form = cmds.formLayout()
tabs = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=5)
cmds.formLayout(form, edit=True, attachForm=((tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0), (tabs, 'right', 0)))
child1 = cmds.rowColumnLayout(numberOfColumns=2)
# Part I want in every tab
MasterTab()
# Tab One
cmds.text(label='text of tab One', h=50, align='left')
cmds.setParent('..')
child2 = cmds.rowColumnLayout(numberOfColumns=2)
# Part I want in every tab
MasterTab()
# Tab Two
cmds.text(label='text of tab Two', h=50, align='left')
cmds.setParent('..')
cmds.tabLayout(tabs, edit=True, tabLabel=((child1, 'One'), (child2, 'Two')))
cmds.showWindow()
私はボタンを押すとテキスト示す「こんにちは」は唯一の「さようなら」に変更されます何らかの理由で2番目のタブ。だから私はすべてのタブで私のMasterTab
関数を呼び出すことができない場合、それを一度だけ呼び出す方法があり、それはすべてのタブに添付されますか?あるいは、別の方法がある場合は、私は提案をすることができます。
ありがとうございました!
スコーピングのニュアンスに
より詳細には、あなたの答えをありがとう!私はそれが名前変更の問題かもしれないと思った..しかし、このコードでは、ボタンは同じタブのテキストを変更するだけで、私が必要とするようなタブはない。フィールドをインスタンス化する簡単な方法が見つからない場合は、各タブの各フィールドの変更を適用するための回避策を講じなければならないと思います。 – Woogi
Mayaには、そういう世界的な価値観のアイデアはありません。あなたの最善の策は、すべての状態を共有変数に格納し、変数を使用してtabLayoutの 'preSelectCommand'フックでUIを更新することです。 – theodox
ありがとうtheodox – Woogi