PyQt的.类型错误

ser*_*rge 4 pyqt

我用我的QMainWindow设置过滤器:

keyPressFilter = keypressfilter.KeyPressFilter(self)
self.installEventFilter(keyPressFilter)
Run Code Online (Sandbox Code Playgroud)

KeyPressFilter本身:

class KeyPressFilter(QObject):

    def __init__(self, parent=None):
        super(KeyPressFilter, self).__init__(parent)


    def eventFilter(self, obj, event):
        if event.type() == QEvent.KeyPress:
            print "key press %d" % event.key()
            return True
        else:
            return QObject.eventFilter(obj, event)  <- line NN
Run Code Online (Sandbox Code Playgroud)

我得到每个eventtype QEvent\QPaintEvent\QHoverEvent\etc无限错误:

line NN, in eventFilter:
TypeError: QObject.eventFilter(QObject, QEvent): argument 2 has unexpected type 'QPaintEvent'
Run Code Online (Sandbox Code Playgroud)

我怎么能摆脱它?

Thx提前,

哔叽

Luk*_*ský 6

eventFilter()不是类方法,所以你也需要传递self:

return QObject.eventFilter(self, obj, event)
Run Code Online (Sandbox Code Playgroud)