Изменение пользовательского интерфейса Maya по умолчанию (добавление функции правой кнопки мыши к кнопке) - используя MEL или Python - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь добавить функцию правого щелчка к кнопке или тексту в пользовательском интерфейсе Maya, в частности, к «цветному» вводу в редакторе атрибутов шейдера.

Я имею в виду, что я хочу, чтобы пользовательбыть в состоянии щелкнуть правой кнопкой мыши на слове «Цвет» ИЛИ, возможно, на кнопках флажка рядом с ним, и он получает текущее имя шейдера и запускает функцию (открывается небольшое окно).

(ПРИМЕЧАНИЕ - этоэто для существующего пользовательского интерфейса - я не говорю о добавлении правого щелчка к пользовательской кнопке полки.)

Возможно ли это вообще?

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

это было бы выполнимо в любом контексте вне редактора атрибутов - но, к сожалению, внутри AE намного сложнее.

Пользовательский интерфейс редактора атрибутов создается в MEL и немного отличается от обычного пользовательского интерфейса MEL (типа, который вы пишете для себя).В частности, уже есть меню правой кнопки мыши на ярлыках внутри редактора атрибутов, которое позволяет вам задавать выражения или связывать атрибуты, и оно скрыто где-то внутри редактора атрибутов MEL (который будет в папке скриптов внутри вашего Maya).монтаж).Даже если вы можете получить базовые виджеты, нет простого способа найти, отключить или расширить существующее всплывающее меню;он где-то похоронен, но именно там, где трудно сказать: уловка старой школы MEL с использованием текстового поиска всех сценариев в папке, вероятно, не будет работать, потому что многие из видимых меток в пользовательском интерфейсе теперь находятся внутриотдельные файлы ресурсов для поддержки интернационализации - хорошо для не англоязычных клиентов, но это означает, что поиск "Create New Expression..." не находит скрипт всплывающего меню AE.Хотя это не является буквально невозможным - этот пользовательский интерфейс где-то создается - это, вероятно, не очень выгодно для ваших временных затрат.

Если вас интересует только запуск сценария для объекта, видимого в данный момент вAE, это даст вам имя активного элемента:

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

Это даст вам все, что отображается в главном редакторе AE - хотя если ничего не выбрано (поэтому AE кажется пустым)он все равно вернет последний элемент, который был в AE.

0 голосов
/ 05 декабря 2018

вот фрагмент кода, который я использовал с 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)?

...