Maya Pymel:传递fileDialog2返回UI文本域

时间:2016-01-06 04:46:09

标签: python maya pymel

我无法理解如何使用fileDialog2的“optionsUICommit”标志。当用户在文件对话框中点击“保存”时,我想运行命令on_save_dialog_file。但是从帮助文件中,似乎要我使用MEL命令。

http://help.autodesk.com/cloudhelp/2016/ENU/Maya-Tech-Docs/CommandsPython/index.html

  

仅限MEL。该字符串被解释为要调用的MEL回调   对话框成功解除时。如果是,它将不会被调用   用户取消对话框,或使用窗口标题关闭窗口   条形控件或其他窗口系统的意思。回调是   form:global proc MyCustomOptionsUICommit(string $ parent)

     

父参数是控件所在的父布局   使用optionsUICreate标志

添加

这似乎很复杂。

这是我的代码。

import pymel.core as pm


def on_save_dialog_file(myDialog):
    print "Hello from file_dialog_save_file()!"


def file_dialog_save_file():
    myDialog = pm.fileDialog2(ocm="on_save_dialog_file", fm=0, ff="Maya Files (*.ma *.mb);;Maya ASCII (*.ma);;Maya Binary (*.mb);;All Files (*.*)", dialogStyle=2)
    print myDialog


file_dialog_save_file()

即使尝试作为一个奇怪的Mel-> Python命令也行不通。 ocm="python \"on_save_dialog_file()\";"

在对话框中设置保存文件后,是否有更简单/更直接的方式来运行命令?

2 个答案:

答案 0 :(得分:1)

你可以这样做,没有回调。除用户选择之外的任何内容都将返回None

c = cmds.fileDialog2(fm=0, ff="Maya Files (*.ma *.mb);;Maya ASCII (*.ma);;Maya Binary (*.mb);;All Files (*.*)", dialogStyle=2)
if c:
    print c
else:
    print "user cancelled"

答案 1 :(得分:1)

在处理FileDialog2时,为我提供的东西是它返回数组中所选文件/目录的路径。如果要使用返回信息的字符串值,则必须首先指定数组的一部分。

c = mc.fileDialog2(fm=3, dialogStyle=2)
k = c[0]
print(str(k))