python - Maya中的Python问题说我的函数没有定义
问题描述
所以说实话,我在这里的出拳有点超出我的体重,我不完全理解我在做什么,但随着它的进行,我一直在学习并使事情发挥作用,所以我正处于学习关于超前思考的宝贵经验的阶段。所以我有两个目录,一个有 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。我在这里错过了一些非常明显的东西吗?
*已编辑以修复函数名称
解决方案
似乎您的错误消息和代码不同,因为没有调用函数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)
推荐阅读
- php - 根据内容从数组中删除数组值,PHP
- sql - SQL - 如何按数组列过滤表?
- excel - 具有多个条件的 SUMIF 仅返回单个条件的结果
- python - 使用 matplotlib 在 colorplot 中弄乱颜色和轴
- java - 检查是否已安装 3rd 方应用程序?
- python - Py.Test 以编程方式调用时找不到 pytest-parallel
- ios - 关于在 Swift 中等待批准的计划通知的问题
- django - 测试具有发布请求的 django 视图
- python - 如何使用 Nan 读取 Pandas 中的 CSV 文件?
- node.js - Socket.io io 未定义