【问题标题】:Altering Maya's default UI (adding right click function to a button) - using MEL or Python更改 Maya 的默认 UI(向按钮添加右键单击功能) - 使用 MEL 或 Python
【发布时间】:2019-05-06 23:58:48
【问题描述】:

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

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

(注意 - 这是针对现有用户界面的 - 我不是在谈论将右键单击添加到自定义架子按钮。)

这可能吗?

【问题讨论】:

    标签: python user-interface interface maya mel


    【解决方案1】:

    这是我在 pyqt4 中使用的代码 sn-p

    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 : How to check if a key modifier is pressed (shift, ctrl, alt)?

    【讨论】:

    • 谢谢你 - 但是我想知道我如何将它映射到 UI 的一个区域。 IE。如何说“如果单击现有 Maya UI 的此区域,则运行此过程”?我可能弄错了,但这不是 custom UI 按钮吗?
    • 你可以只导入QtGui.qApp并把它放在maya命令ui中
    • 很遗憾,我不确定您所说的抱歉是什么意思。你能详细说明一下菜鸟吗?
    【解决方案2】:

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

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

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

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

    这将为您提供主 AE 编辑器中显示的任何内容 - 尽管如果未选择任何内容(因此 AE 显示为空),它仍将返回 AE 中的 last 项。

    【讨论】:

      猜你喜欢
      • 2015-06-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多