Maya Python通过变量读取并设置optionMenu值

时间:2017-10-20 08:26:04

标签: python maya

我有一个模块,在用户使用我的工具后创建一个savedSettings.py文件,这个文件填充了下次使用该工具时加载到gui中的变量。

我有一些复选框和一个选项菜单。读取和设置复选框的变量非常简单:

var aBindings = this.getView().byId("table").getBindingInfo("items").binding.aIndices;
var oExportModel = new JSONModel({
    data: {
        services:{
        }
    }
});

var aServices = [];
for (var iCounter = 0; iCounter < aBindings.length; iCounter++){
    var oService = this.getView().getModel("data").getProperty("/data/services/" + aBindings[iCounter]);
    aServices.push(oService);
}
oExportModel.setProperty("/data/services", aServices);
this.setModel(oExportModel, "exportModel");

我认为optionMenu会是一样的并且写道:

# loadsettings into gui
if os.path.exists(userSettings):
    sys.path.append(toolFolder)
    import savedSettings

    viewCBvalue = savedSettings.viewCheck
    ornamentCBvalue = savedSettings.ornamentCheck
    renderCBvalue = savedSettings.renderCheck

当我现在告诉GUI使用变量时:

    encodingOMvalue = savedSettings.encodingCheck

我得到了以下错误:

cmds.checkBoxGrp( 'viewCB', label = 'View: ', value1 = viewCBvalue)
cmds.checkBoxGrp( 'ornamentCB', label = 'Show Ornaments: ', value1 = ornamentCBvalue)
cmds.checkBoxGrp( 'renderCB', label = 'Render offscreen: ', value1 = renderCBvalue)

cmds.optionMenuGrp( 'encodingOM', label = 'Encoding ', value = encodingOMvalue )
cmds.menuItem( 'tif', label = 'tif')
cmds.menuItem( 'jpg', label = 'jpg')
cmds.menuItem( 'png', label = 'png')

我的savedSettings.py看起来像这样:

RuntimeError: Item not found: tif # 

如果有人向我解释我做错了什么以及如何为optionMenu设置变量,那会很棒。

感谢您提前抽出时间并享受美好的一天编码!

1 个答案:

答案 0 :(得分:1)

不要这样做。相反,请使用mayas内部机制optionVar

但如果你必须这样做,那么当你这样做时就知道了:

import savedSettings
  • savedSettings 中定义的内容存储在savedSettings内,因此如果您拥有var viewCBvalue,则可以使用savedSettings.viewCBvalue调用它。你可以通过调用import savedSettings as *将它加载到main中,但你真的,真的不想这样做!

  • Python导入不是正常的功能,结果会被缓存。

  • 其他各种问题。不要为此目的使用导入

如果您不想使用optionVar,请考虑使用pickle