Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修改Maya';s默认UI(向按钮添加右键单击功能)-使用MEL或Python_Python_User Interface_Interface_Maya_Mel - Fatal编程技术网

修改Maya';s默认UI(向按钮添加右键单击功能)-使用MEL或Python

修改Maya';s默认UI(向按钮添加右键单击功能)-使用MEL或Python,python,user-interface,interface,maya,mel,Python,User Interface,Interface,Maya,Mel,我正在尝试向Maya UI中的按钮或文本添加右键单击功能,特别是将“颜色”输入着色器的属性编辑器 我的意思是,我希望用户能够右键单击单词“Color”或者它旁边的复选框按钮,然后它获取当前着色器名称并运行一个函数(打开一个小窗口) (注意-这是针对现有UI的-我不是说在自定义工具架按钮上添加右键单击。) 这可能吗?这是我在pyqt4中使用的代码片段 self.btn = QtGui.QPushButton("myname") self.btn.clicked.connect(self.btn_p

我正在尝试向Maya UI中的按钮或文本添加右键单击功能,特别是将“颜色”输入着色器的属性编辑器

我的意思是,我希望用户能够右键单击单词“Color”或者它旁边的复选框按钮,然后它获取当前着色器名称并运行一个函数(打开一个小窗口)

(注意-这是针对现有UI的-我不是说在自定义工具架按钮上添加右键单击。)


这可能吗?

这是我在pyqt4中使用的代码片段

self.btn = QtGui.QPushButton("myname")
self.btn.clicked.connect(self.btn_proc)


def btn_proc(self):
    if QtGui.qApp.keyboardModifiers() & QtCore.Qt.ControlModifier:
        self.func1()
    elif QtGui.qApp.keyboardModifiers() & QtCore.Qt.AltModifier:
        self.func2()
    elif QtGui.qApp.mouseButtons() & QtCore.Qt.RightButton:
        cmds.softSelect(ssd=.1)
    else:
        self.func3()
否则,使用pyqt5:

这在属性编辑器之外的任何环境中都是可行的——但不幸的是,在AE内部要困难得多

属性编辑器UI是在MEL中生成的,与普通MEL UI(您自己编写的类型)略有不同。特别是,“属性编辑器”(attribute editor)中的标签上已经有了一个右键单击菜单(用于设置表达式或连接属性),它隐藏在“属性编辑器”(attribute editor)MEL中的某个位置(将位于Maya安装中的“脚本”(Script)文件夹中)。即使您可以获得底层的小部件,也没有简单的方法来查找、禁用或扩展现有的弹出菜单;它埋在那里的某个地方,但确切的位置很难说:对文件夹中的所有脚本使用文本搜索的旧式MEL技巧可能行不通,因为UI上的许多可见标签现在都位于单独的资源文件中,以支持国际化--这对非英语客户很好,但这意味着搜索
“创建新表达式…”
不会找到AE弹出菜单脚本。虽然这并不是不可能的——UI是在某个地方创建的——但它可能对您的时间投资没有什么价值

如果您只对在AE中当前可见的对象上运行脚本感兴趣,这将为您提供活动项的名称:

 cmds.nameField('AEnodeNameField', q=True, o=True)

这将获得主AE编辑器中显示的任何内容——尽管如果未选择任何内容(因此AE显示为空),它仍将返回AE中的最后一项

谢谢你,不过我想知道如何将其映射到UI的某个区域。例如,我如何说“如果单击现有Maya UI的此区域,请运行此过程”?我可能弄错了,但这不是自定义UI按钮吗?您可以只导入QtGui.qApp并将其放入maya命令uiI中。很遗憾,我不确定您所说的抱歉是什么意思。你能详细说明一下吗?