从UI添加(命名)或删除一组UI元素(&N)

2024-10-03 13:22:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在maya中制作一个UI,在那里我想创建一个带有一组textFieldButtonGrp的下拉选项卡(提示命名选项卡),或者在我按add'+'或remove'-'按钮时删除它。你知道吗

UI代码(带一个选项卡):

import maya.cmds as cmds
import pymel.core as pm
import maya.cmds as cmds
import maya.OpenMaya as om
import math

from functools import partial


###################################################################################
            #TOOL WINDOW#                       #TOOL WINDOW#
###################################################################################
def frameCollapseChanged(ToolWindow):
         cmds.evalDeferred("cmds.window('ToolUI', e=1, h=sum([eval('cmds.' + cmds.objectTypeUI(child) + '(\\'' + child + '\\', q=1, h=1)') for child in mc.columnLayout('" + ToolWindow + "', q=1, ca=1)]))")

     #check to see if window exists
if cmds.window("ToolUI", exists = True):
     cmds.deleteUI("ToolUI")
     #create window
ToolWindow = cmds.window("ToolUI", title = "Tool UI", mnb = True, mxb = False,)
    #create a main layout
mainLayout = cmds.columnLayout (adjustableColumn=True)

form = cmds.formLayout()
tabs = cmds.tabLayout(innerMarginWidth=5, innerMarginHeight=5,cr=True)
cmds.formLayout( form, edit=True, attachForm=((tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0), (tabs, 'right', 0)) )
###################################################################################
            #SETUP TAB CONTENT#                       #SETUP TAB CONTENT#
###################################################################################
child1 = cmds.rowColumnLayout(numberOfColumns=1,adjustableColumn=True)
cmds.text(label = 'Root Joint Selection', align ='center')
cmds.button(label = 'Add Selector', command=lambda event:Name_DialogBox())

cmds.setParent( '..' )

###################################################################################
            #TOOL TAB CONTENT#                       #TOOL TAB CONTENT#
###################################################################################

child2 = cmds.rowColumnLayout(numberOfColumns=2, columnWidth=(300,250),adjustableColumn=True)

cmds.columnLayout(columnAttach=('both', 5),columnWidth=300, columnAlign="center", adjustableColumn=True )
cmds.text(label = 'FK IK Switch', align ='center')



cmds.setParent( '..' )
cmds.setParent( '..' )

###################################################################################
            #TOOL TABS#                                #TOOL TABS#
###################################################################################
cmds.tabLayout( tabs, edit=True, tabLabel=((child1, 'Set Up'), (child2, 'Tool')) )

cmds.showWindow()


winHeight = 0
     # iterate through all children of the main layout
for child in cmds.columnLayout(mainLayout, q=1, ca=1):
         # for each child, get it's type, then use that run an eval command to get that ui item's 
         #height and add it to the height variable
     winHeight += eval('cmds.' + cmds.objectTypeUI(child) + '("' + child + '", q=1, h=1)')
     # set the window height with the gathered height values
cmds.window('ToolUI', e=1, h=winHeight) 


#################################################################################################################
            #CREATE SELECTION LISTS#                                #CREATE SELECTION LISTS# 
#################################################################################################################

def Name_DialogBox():
    result = cmds.promptDialog(
            title='Rename Object',
            message='Enter Name:',
            button=['OK', 'Cancel'],
            defaultButton='OK',
            cancelButton='Cancel',
            dismissString='Cancel')

    if result == 'OK':
        InstanceName = cmds.promptDialog(query=True, text=True)
        print InstanceName
        ###Create New Tab using text as name####
        New_Tab_Set(InstanceName)
        return InstanceName




class New_Tab_Set:

    def __init__(self, InstanceName):
        self.name = InstanceName


    def Set_up_Tab(self):

        self.tab1=cmds.frameLayout (width = 300, label = self.name,  collapse = True, collapsable = True, marginWidth = 5, parent = child1);
        self.cmds.text(label = self.name, align ='center')
        self.tsL0 =cmds.textFieldButtonGrp(ed=False, adj=1,cal=(1,"left"),cw3=(10,100,25), cl3=("left","left","left") , 
                                    buttonLabel='Root   FK',bc = 'Create_Selection_Chains.select_joints_afk(left_arm_select)' )
        self.gtF0 = tsL0 

        self.tsL1 = cmds.textFieldButtonGrp(ed=False, adj=1,cal=(1,"left"),cw3=(10,100,25), cl3=("left","left","left") , 
                                    buttonLabel='Wrist   IK',bc = 'Create_Selection_Chains.select_joints_aikw(left_arm_select)')
        self.gtF1 = tsL1

        self.tsL2 = cmds.textFieldButtonGrp(ed=False, adj=1,cal=(1,"left"),cw3=(10,100,25), cl3=("left","left","left") , 
                                    buttonLabel='Elbow IK',bc = 'Create_Selection_Chains.select_joints_ikpv(left_arm_select)' )
        self.gtF2 = tsL2

        self.cmds.separator(h=5)
        self.cmds.button(label= 'Remove' + self.name, command = 'Remove()', width=100)
        self.cmds.separator(h=5)

我的问题是我不确定如何将新的选项卡内容添加到UI中

有人能给我指出正确的方向吗?你知道吗


Tags: textimportselfchildtrueastoolwindow