2017-10-20 63 views
0

我有一个模块,在用户使用我的工具后创建savedSettings.py文件,该文件充满变量以在下次使用该工具时加载到gui中。玛雅Python读取并通过变量设置optionMenu值

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

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

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

我以为optionMenu将是相同的,并写道:

encodingOMvalue = savedSettings.encodingCheck 

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

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') 

我得到follwing错误:

RuntimeError: Item not found: tif # 

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

# User Settings Savefile: 
viewCheck = False 
ornamentCheck = False 
renderCheck = False 
encodingCheck = "tif" 

将是巨大的,如果有人解释说我什么,我做错了,如何设置变量的optionMenu。

感谢您提前抽出时间,祝您有美好的一天!

回答

1

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

但是如果你必须这样做,后来才知道,当你做:

import savedSettings 
  • 无论是在savedSettings定义存储里面savedSettings,所以如果你有VAR viewCBvalue然后你把它savedSettings.viewCBvalue。您可以通过调用import savedSettings as *将其加载到主文件夹中,但您确实不想这么做!

  • Python导入不是一个正常的函数,结果得到缓存。

  • 其他各种问题。不使用进口用于此目的

如果你不想使用optionVar,可以考虑使用pickle