在类外调用变量

时间:2020-09-08 06:26:04

标签: python maya

如何获取在类内部定义的intSliderGrp的值并将其用于所述类之外的函数上?

我试图将主UI都放在类中,以便可以在maya中调用它,但是我需要在滑块上设置值以修改classUI之外的函数:

import maya.cmds as cmds

def setSubdivision(*args):
    obj = cmds.ls(sl = True)
    asubd = cmds.intSliderGrp(sliderSet, query = True , value = True)
    for i in obj:
        cmds.setAttr('%s.aiSubdivIterations' %i, int(asubd))
        
class subdivisionUI():
    
    windowName = "ArnoldSubdivisionWindow"

    def show(self):

        if cmds.window(self.windowName, query =  True, exists =  True, width = 150):
            cmds.deleteUI(self.windowName)

        cmds.window(self.windowName)
        
        mainColumn = cmds.columnLayout(adjustableColumn = True)
        
        cmds.text(l='Set subdivisions to selected objects', al = 'center')

        column2 = cmds.rowLayout(numberOfColumns = 2, adjustableColumn=2, columnAlign=(1, 'right'))
        sliderSet = cmds.intSliderGrp(l = "Subdivisions", s =1, min = 0, max = 20, field = True)
        b = cmds.button(l = 'Set')
        cmds.button(b, e = True , command = setSubdivision, width = 50 ) 

        

        cmds.showWindow()
        
        
subdivisionUI().show()

这是我第一次使用类,因此我仍在尝试了解它们的工作原理和正确用法。

1 个答案:

答案 0 :(得分:2)

目前,您没有在Maya中使用类的优势来创建UI。最大的优点是您可以将所有内容封装在此类中,而无需任何外部函数或全局变量。如果您尝试这种方法,问题就会消失:

const test = new Array(2).fill({ a: 1, b: 2 });

test[0].a = 3;
相关问题