我正在“ MAYA”中的“ python脚本”上工作,当我使用“ pm.fileDialog2”并且单击退出按钮时,循环脚本仍在运行,我想在打开文件并单击时关闭按钮“ for loop”停止。谢谢您的帮助
这是“ MAYA”中的pyside和pymel脚本
#file: run_script
_runScript(scripts=['file_a.py', 'file_b.py'])
def _runScript(scripts=[]):
if len(scripts):
for script in scripts:
exec(open(script).read(), globals())
#file: file_a
open_file = pm.fileDialog2(cap='Open File',ff='Maya Files (*.ma *.mb)', dir='C:/', ds=1, fm=4 )
if open_file:
print('Open File')
else:
print('Not Open')
#file: file_b
print('this is file_b')
答案 0 :(得分:0)
我不确定我是否了解用例,因此,如果这不是您要查找的内容,则深表歉意。
使用exec()
通常不是一个好主意,因为它可能会在全局命名空间中留下无法预见的痕迹-在您的示例中,open_file
变量在您运行后将存在,因为{{1} }的运行方式就好像您只是在直接运行代码一样。更常见且更安全的模式是在功能内部进行工作,然后导入这些功能以进行工作。
如果您要打开一个文件并在单个函数中执行某些操作,通常的模式是拥有一个文件,该文件定义了要运行的函数:
exec()
然后导入该文件并使用该功能完成工作。这样,您就可以拥有控制流程,而无需任何其他技巧。
# in "do_something.py"
import maya.cmds as cmds
def process(filename):
if filename:
cmds.file(open=filename)
print "doing things in ...", filename
#real work here
else:
print "no file provided"
return
要导入文件,您需要将其放在python路径中的某个位置;基础是here