首页 > 解决方案 > 如何在 optionMenuGrp -Pyhotn for maya 2018 的项目中添加图标?

问题描述

我想在选项菜单中有文本和图标,我尝试对 optionMenuGrp 命令使用标志(图像),但我似乎无法正确处理,这是我一直在处理的代码:

    import maya.cmds as cmds 



class ctrl_UI(object):

    @classmethod
    def display(cls,development=True):
        if cmds.window("ctrl_UI_window",exists=True):
            cmds.deleteUI("ctrl_UI_window")
        if development and cmds.windowPref("ctrl_UI_window", exists=True):
            cmds.windowPref("ctrl_UI_window", remove=True)
        cls.main_window=cmds.window("ctrl_UI_window",sizeable=False,rtf=True,mnb=False,mxb=False,t="Create Controllers") 
        main_layout=cmds.formLayout(p=cls.main_window)


       # Shap layout 
        shape_layout=cmds.rowLayout(p=main_layout,nc=1)
        cmds.formLayout(main_layout ,e=True ,af=(shape_layout,"top",4))
        cmds.formLayout(main_layout ,e=True ,af=(shape_layout,"left",4))

        cls.cShape=cmds.optionMenuGrp(l="Controller Shapes") 
        cmds.menuItem(i="C:\Users\HHCL\Documents\maya\2018\prefs\icons\Icon1.jpeg")
        cmds.menuItem(l="Cube",i="G:\Elham\scripts\Key tools\Icon2.jpeg")
        cmds.menuItem(l="Sphere",i="G:\Elham\scripts\Key tools\Icon1.jpeg")
        cmds.menuItem(l="Triangle",i="G:\Elham\scripts\Key tools\Icon2.jpeg")
        cmds.menuItem(l="Square",i="G:\Elham\scripts\Key tools\Icon1.jpeg")
        cmds.menuItem(l="Ring",i="G:\Elham\scripts\Key tools\Icon2.jpeg")
        cmds.menuItem(l="Half Circle",i="G:\Elham\scripts\Key tools\Icon1.jpeg")
        cmds.menuItem(l="Two Pin",i="G:\Elham\scripts\Key tools\Icon2.jpeg")
        cmds.menuItem(l="Quad Pin",i="G:\Elham\scripts\Key tools\Icon1.jpeg")
        cmds.menuItem(l="Locatore",i="G:\Elham\scripts\Key tools\Icon2.jpeg")
        cmds.menuItem(l="Single Arrow",i="G:\Elham\scripts\Key tools\Icon1.jpeg")
        cmds.menuItem(l="Double Arrow",i="G:\Elham\scripts\Key tools\Icon2.jpeg")
        cmds.menuItem(l="Four Arrow",i="G:\Elham\scripts\Key tools\Icon1.jpeg")
        cmds.menuItem(l="Pointer Arrow",i="G:\Elham\scripts\Key tools\Icon2.jpeg")
        cmds.menuItem(l="Arrow Head",i="G:\Elham\scripts\Key tools\Icon1.jpeg")
        cmds.menuItem(l="Plus",i="G:\Elham\scripts\Key tools\Icon2.jpeg")

        cmds.showWindow("ctrl_UI_window")
if __name__ =="__main__":
    c=ctrl_UI()
    c.display()

我觉得我错过了一些东西,但我不能把它交给它任何帮助将不胜感激。提前致谢

标签: pythonmaya

解决方案


图标可以与 menuItems 上的图像标志一起显示。图像标志需要图标路径的字符串。Maya optionMenuGrp 控件似乎抑制了图像标志和其他(例如 -cc 等)

您的代码中的另一个错误是您使用single backwards slashes“\”。将其更改为forward slashes“/”或使用double backslashes“\\”作为路径分隔符。

\t- 例如,将是一个制表键 \n- 将是一个换行符

由于这个问题,无法找到路径,但 Maya 只是忽略了错误的图像路径,而不是错误。

如果您也想在其他计算机上使用此脚本,也建议不要使用绝对路径,而是将图标放入您的脚本包中,并根据包在磁盘上的位置生成完整路径。

编辑:在尝试修复反斜杠之后,当 menuItem 控件添加到 optionMenuGrp 时,Maya 会忽略图像。图像仍然可以在 optionMenu 中工作(例如,对于 Windows 中的主菜单控件) 建议切换到 Maya 附带的 PySide/PySide2 形式的 Qt,并改用 QComboBox。


推荐阅读