我在Autodesk Maya中使用Python,但这应该适用于任何地方。
我有一个名为bRigUI
的类,它继承自文件wingUtils
内的另一个名为wingUtilities.py
的类
我可以使用继承来获取self.gPrefix
/等名称。但我不知道如何进入类内部函数内部的函数,如def cName(txt):
以下是wingUtilities
脚本:
import maya.cmds as cmds
class wingUtils():
def __init__(self):
pass
def wingUtil(self, *args):
self.gPrefix = cmds.textField(self.prefixField, q = True, text = True)
self.lPrefix = cmds.textField(self.leftPrefixField, q = True, text = True)
self.rPrefix = cmds.textField(self.rightPrefixField, q = True, text = True)
def cName(txt):
n = self.gPrefix + (txt)
def lName(txt):
n = self.gPrefix + self.lPrefix + (txt)
def rName(txt):
n = self.gPrefix + self.rPrefix + (txt)
w = wingUtils()
这是一个非常 dumbed的UI脚本试图调用它(也是继承的类) - 这个脚本不会工作,它只是一个shell来向你展示我的内容“没有杂乱无章。”
import maya.cmds as cmds
import jtWingRigAutomation.wingUtilities as wingUtilities
reload(wingUtilities)
class bRigUI(wingUtilities.wingUtils):
def __init__(self):
bRigUI = 'bRigUI'
if cmds.window(bRigUI, exists = True):
cmds.deleteUI(bRigUI)
bRigUI = cmds.window('bRigUI', title = 'JT Wing Rig Automation')
form = cmds.formLayout()
tabs = cmds.tabLayout(innerMarginWidth = 5, innerMarginHeight = 5)
cmds.formLayout(form, e = True, attachForm=((tabs, 'top', 0), (tabs, 'left', 0), (tabs, 'bottom', 0), (tabs, 'right', 0)))
tab2 = cmds.rowColumnLayout('Wing Setup', parent = tabs)
cmds.text(self.naming(), parent = tab2)
cmds.showWindow(bRigUI)
cmds.window(bRigUI, e = True, w = 250, h = 500)
b = bRigUI()
我在UI脚本中输入什么来调用cName
类中方法中的函数wingUtils
?
答案 0 :(得分:4)
你做不到。 cName
是一个局部变量,仅存在于wingUtils.wingUtil
的函数上下文中,并且只能通过该函数中的代码访问。
答案 1 :(得分:2)
唯一的方法是将内部函数移动到外部作用域。你有充分的理由让他们成为内部功能吗?如果是这样,就没有办法做你想做的事。否则,您可以考虑重写该课程。目前,三个函数cName()
,lName()
和rName()
完全没有任何作用,因为没有代码可以从外部调用它们,并且它们不会在内部调用。在这种情况下,只需简单地添加self
即可:
class wingUtils():
def __init__(self):
pass
def wingUtil(self, *args):
self.gPrefix = cmds.textField(self.prefixField, q = True, text = True)
self.lPrefix = cmds.textField(self.leftPrefixField, q = True, text = True)
self.rPrefix = cmds.textField(self.rightPrefixField, q = True, text = True)
def cName(self, txt):
n = self.gPrefix + (txt)
def lName(self, txt):
n = self.gPrefix + self.lPrefix + (txt)
def rName(self, txt):
n = self.gPrefix + self.rPrefix + (txt)