【问题标题】:Issue with Python in Maya saying my function isn't definedMaya中的Python问题说我的函数没有定义
【发布时间】:2021-09-27 02:27:35
【问题描述】:

所以说实话,我在这里的出拳有点超出我的体重,我并不完全理解我在做什么,但随着它的发展,我一直在学习和创造东西工作,所以我正处于学习关于超前思考的宝贵经验的阶段。所以我有两个目录,一个有 47 个图像,一个有 47 个目录,它们具有与图像对应的相同名称。例如,如果有一个名为“img_05.jpg”的图像,那么还有一个名为“img_05”的目录。我的想法是,我创建了一个循环遍历图像目录的窗口,并为每个图像创建一个 image_icon 按钮,如下面的代码所示:

from maya import cmds
import os
import pymel.core as pm
import maya.mel as mel

imagePath = \
    'C:/IMAGES/_ICONS_/'
if cmds.window('window1', q=1, ex=1):
    cmds.deleteUI('window1')
cmds.window('window1', t='SCAN IMPORTER', mb=1)
cmds.gridLayout(cw=150, w=500, nc=8, h=800, ch=150)

getImgList = os.listdir(imagePath)

# print getImgList

i = 0
for i in getImgList:
    ImgNamStr = i
    ImgNamNum1 = ImgNamStr.split('.')

    # print ImgNamNum1[0]

    scanBtn = cmds.iconTextButton(i=imagePath + i, c='scanImp("' + i
                                  + '")', dcc='scan_light("' + i
                                  + '")')

cmds.showWindow('window1')

我的其他函数也是这样定义的,

def scanImp(*args):
    print args[0] + ' ' + ' was pushed.'
    ImgNmNoExt = args[0].split('.')

  # print ImgNmNoExt[0]

    ScanBtnPath = imagePath + ImgNmNoExt[0]
    print 'the directory is:' + ' ' + ScanBtnPath

当我通过 Maya 脚本编辑器运行此程序时,一切正常。但是,当我通过架子按钮获取它时,(脚本目录在启动时添加到路径中)我收到一条错误消息,指出未定义 scanImp。我在这里遗漏了一些非常明显的东西吗?

*修改函数名

【问题讨论】:

    标签: python maya


    【解决方案1】:

    似乎您的错误消息和代码不同,因为没有名为scanBusImp() 的函数。除了这个错误之外,主要问题在于 UI 在 Maya 中的工作方式。你可以试试:

        scanBtn = cmds.iconTextButton(i=imagePath + i, c='import scanimporter; scanimporter.scanBusImp("' + i
                                  + '")', dcc='scan_light("' + i
                                  + '")')
    

    让它发挥作用。 scanimporter 是我给脚本文件起的名字。出于这个原因,我建议使用类来处理 UI 和回调,使其更易于使用。如果你使用一个类,你可以像这样调用方法:

    def scanBusImp(self, *args):
        importSomething
    
    def createUI(self):
        self.scanBtn = cmds.iconTextButton(i=imgpath..., c=self.scanBusImp)
    

    【讨论】:

    • 所以,实际上我只是在更改一些名称时打错了字,当我在这里发布它以便于阅读时,所以这肯定不是问题,(感谢您为了这些目的而抓住它虽然)我的问题是关于类的,我需要阅读它,但是它没有类的事实是否可以解释它无法识别函数的事实?
    • 如果你没有一个类并访问它的成员,你将需要一个全局函数。这就是我在第一个示例中的命令中添加import scanimporter 的原因。没有它,window ui 根本看不到这个功能。
    • 我完全误解了帖子的那部分,哇我觉得我很愚蠢哈哈,非常感谢你,这绝对解决了我遇到的问题。谢谢!
    猜你喜欢
    • 2016-09-19
    • 2019-07-06
    • 2017-04-20
    • 2015-06-02
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多