Geoff Harvey's explanation is correct: Maya attaches additional args... I use lambda to get around that:
def addStartNode(self): # do something mcs.button(l = 'Add Start', w = 112, command=lambda *args: self.addStartNode()) Hope it helps Sasha On Wed, Aug 3, 2011 at 5:25 PM, Geoff Harvey <[email protected]> wrote: > Short answer: Maya fail. > > Longer answer: Maya likes to attach additional values to its GUI > callbacks. > > You can fix this by redefining your defs as such: > > def addStartNode(self, *_cb_vals): > print _cb_vals > [..] > > Otherwise, looks good. :D > > hoaf > > On Tue, Aug 2, 2011 at 4:39 AM, Ehsan Kiani <[email protected]>wrote: > >> Hey guys, >> >> I got a prob with this code below :* >> >> # CLASS TEMP # >> # Temp class contains the functions which we will use in subclasses >> # Therefore most of essential methods are included here ... >> # --------------------------------------------------------- >> >> # modules >> import maya.cmds as mcs >> #import vrf_utilities as vu >> >> # we use new type classes >> __metaclass__ = type >> >> class Temp(): >> >> # attributes >> >> # addStartNode fn # >> def addStartNode(self): >> # adds a node for starting a rig from >> selList = mcs.ls(sl = True) >> try: >> mcs.textField(self.at_selNodeTxt, e = True, tx = selList[0]) >> >> except: >> print 'Please select at least one start node' >> >> # armLegTempUI fn # >> def armLegTempUI(self, part): >> # creates UI for arm, leg type temps >> if mcs.window('at_win', exists = True): >> mcs.deleteUI('at_win', window = True) >> #mcs.windowPref('at_win', remove = True) >> >> at_win = mcs.window('at_win', t = ('VRF ' + part + ' TEMP RIG'), >> rtf = True, sizeable = False) >> at_mianCol = mcs.columnLayout(adj = True) >> >> at_selRow = mcs.rowLayout(adj = True, nc = 2) >> self.at_selNodeTxt = mcs.textField() >> mcs.button(l = 'Add Start', w = 112, c = self.addStartNode) >> >> mcs.setParent(at_mianCol) >> >> at_nameFL = mcs.frameLayout(l = 'Naming', borderStyle = 'in', cll >> = True) >> at_nameRow = mcs.rowLayout(adj = True, nc = 3) >> self.at_perfixF = mcs.textFieldGrp(l = 'Perfix: ', text = >> 'perfix', cw2 = (35, 130), cl2 = ('left', 'left')) >> self.at_nameF = mcs.textFieldGrp(l = 'Part: ', text = 'part', cw2 >> = (35, 130), cl2 = ('left', 'left')) >> #at_suffixF = mcs.textFieldGrp(l = 'Suffix: ', text = 'suffix', >> cw2 = (35, 70), cl2 = ('left', 'left')) >> >> mcs.setParent(at_mianCol) >> >> at_charTypeFL = mcs.frameLayout(l = 'Creature', borderStyle = >> 'in', cll = True, visible = True) >> self.bipQuad = mcs.radioButtonGrp(l = '', labelArray2=['Biped ' + >> part, 'Quadruped ' + part], numberOfRadioButtons = 2 \ >> , sl = 1, cw3 = (45, 150, 150), cl2 = ('left', 'left')) >> >> mcs.setParent(at_mianCol) >> >> at_sideFL = mcs.frameLayout(l = 'Side', borderStyle = 'in', cll = >> True) >> self.side = mcs.radioButtonGrp(l = '', labelArray3=['R', 'L', 'R - >> L'], numberOfRadioButtons = 3 \ >> , sl = 1, cw4 = (45, 110, 110 , 110), cl3 = ('left', 'left', >> 'left')) >> >> mcs.setParent(at_mianCol) >> >> at_typeFL = mcs.frameLayout(l = 'Type', borderStyle = 'in', cll = >> True) >> self.singleDouble = mcs.radioButtonGrp(l = '', >> labelArray2=['Single Elbow', 'Double Elbow'], numberOfRadioButtons = 2 \ >> , sl = 1, cw3 = (45, 150, 150), cl2 = ('left', 'left')) >> >> mcs.setParent(at_mianCol) >> >> at_inheritFL = mcs.frameLayout(l = 'Inheritance', borderStyle = >> 'in', cll = True, vis = True) >> self.inheritance = mcs.radioButtonGrp(l = '', labelArray2=['R > >> Transfer > L', 'L > Transfer > R'], numberOfRadioButtons = 2 \ >> , sl = 1, cw3 = (45, 150, 150), cl2 = ('left', 'left')) >> >> mcs.setParent(at_mianCol) >> >> at_createFL = mcs.frameLayout(l = 'Create', borderStyle = 'out', >> cll = True) >> mcs.rowLayout(adj = True, nc = 3) >> self.scaleTemp = mcs.intFieldGrp(l = 'Scale Temp: ', value1 = 1, >> cw2 = (61, 50)) >> mcs.button(l = '1) Create Temp', w = 130) >> mcs.button(l = '2) Setup LRA', w = 90) >> >> mcs.setParent(at_mianCol) >> >> mcs.showWindow(at_win) >> >> >> >> at = Temp() >> at.armLegTempUI('Arm')* >> >> And the error I get is : >> >> *# Error: addStartNode() takes exactly 1 argument (2 given) * >> >> *# TypeError: addStartNode() takes exactly 1 argument (2 given) # * >> >> I was wondering if you could tell me why this happens ? >> Please check the green line and how I used the* c = self.addStartNode !* >> >> Best regards, >> -------------------------------------------- >> Ehsan Kiani >> Character TD >> http://vimeo.com/user2219426 >> Mobile: +98 918 936 9006 >> [GMT: +3:30 hrs] >> Iran >> -------------------------------------------- >> >> -- >> view archives: http://groups.google.com/group/python_inside_maya >> change your subscription settings: >> http://groups.google.com/group/python_inside_maya/subscribe >> > > -- > view archives: http://groups.google.com/group/python_inside_maya > change your subscription settings: > http://groups.google.com/group/python_inside_maya/subscribe > -- view archives: http://groups.google.com/group/python_inside_maya change your subscription settings: http://groups.google.com/group/python_inside_maya/subscribe
