首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Maya中添加eventFilter

如何在Maya中添加eventFilter
EN

Stack Overflow用户
提问于 2019-09-30 22:03:17
回答 1查看 216关注 0票数 3

我想创建一个自定义Qt窗口和Maya的拖放功能。从我所能找到的唯一解决方案是为Maya Widget添加一个eventFilter。所以这就是我想要测试的:

代码语言:javascript
复制
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中看到每个acton都有一个新的行,但由于某种原因,我没有看到任何东西,没有错误没有打印消息。所以我认为事件没有被过滤掉,或者事件被另一个小部件拿走了。有没有人知道如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-30 23:09:14

在PySide2中,如果对象未分配给变量,GC将删除该对象,因此在您的示例中,必须执行以下操作:

代码语言:javascript
复制
obj = FilterObject() 
mainWin.installEventFilter(obj)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58169545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档