Functools-partial

functools.partial(func[, *args][, **keywords])
只为函数提供部分参数,同样可以返回一个可操作的对象


import maya.cmds as cmds
from functools import partial

def myfunc(inst=None, thing=None, arg=None):
    print 'arg: ', arg
    print 'inst: ', inst
    print 'thing: ', thing
    data = cmds.button(inst.btnA, query=True, label=True)
    print data
   
class ui():
    def __init__(self, winName="winTheWindow"):
        self.winTitle = "The Window"
        self.winName = winName
       
    def create(self):
        if cmds.window(self.winName, exists=True):
            cmds.deleteUI(self.winName)
           
        cmds.window(self.winName, title=self.winTitle)
        self.mainCol = cmds.columnLayout(adjustableColumn=True)        
        self.btnA = cmds.button(label='Press Me - External Func', c=partial(myfunc, self, 'say...'))
        self.btnB = cmds.button(label='Press Me - External Func', c=partial(self.a, 'something...'))
        self.btnC = cmds.button(label='Press Me - External Func No args', c=self.b)
        cmds.showWindow(self.winName)
        cmds.window(self.winName, edit=True, widthHeight=[250, 75])
       
    def a(self, myarg=None, arg=None):
        print 'myarg:', myarg
       
    def b(self, arg=None):
        print 'button require an argument'
        print 'the argument passed in will always be the last argument'
       
#create the window
inst = ui()
inst.create()

你可能感兴趣的:(C++,c,UI,C#)