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



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

我的意思是,我希望用户能够右键单击单词"颜色",或者可能单击它旁边的复选框按钮,它就会获得当前着色器名称并运行一个函数(打开一个小窗口(。

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

这有可能吗?

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

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

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

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

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

这是我在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:如何检查是否按下了键修饰符(shift、ctrl、alt(?

最新更新