Я бы хотел создать функциональность drag'n drop с пользовательским окном Qt и Maya. Из того, что я смог найти, единственное решение - добавить eventFilter для виджета Maya. Итак, вот что я пытался проверить:
import maya.OpenMayaUI as omui
from PySide2 import QtWidgets
from PySide2 import QtCore
from shiboken2 import wrapInstance
def getMainWindowPtr():
mayaMainWindowPtr = omui.MQtUtil.mainWindow()
mayaMainWindow = wrapInstance(long(mayaMainWindowPtr), QtWidgets.QMainWindow)
return mayaMainWindow
class FilterObject(QtCore.QObject):
def eventFilter(self, obj, event):
print "Event", obj, event, event.type()
if event.type() == QtCore.QEvent.KeyPress:
if not event.isAutoRepeat():
key = event.key()
print "Key", key
if key == QtCore.Qt.Key_A:
print 'A held'
return super(FilterObject, self).eventFilter(obj, event)
mainWin = getMainWindowPtr()
mainWin.installEventFilter(FilterObject())
Я ожидаю увидеть новую строку для каждого актона, который я делаю в Maya, но по какой-то причине я ничего не вижу, ни ошибки, ни печатисообщение. Поэтому я предполагаю, что событие не отфильтровано или событие удалено другим виджетом. У кого-нибудь есть идеи, как подойти к этой проблеме?