serge
serge

Reputation: 415

PyQt. TypeError

I set filter on my QMainWindow with this:

keyPressFilter = keypressfilter.KeyPressFilter(self)
self.installEventFilter(keyPressFilter)

KeyPressFilter itself:

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

and i getting endless errors with every eventtype QEvent\QPaintEvent\QHoverEvent\etc:

line NN, in eventFilter:
TypeError: QObject.eventFilter(QObject, QEvent): argument 2 has unexpected type 'QPaintEvent'

How can i get rid of it?

Thx in advance,

Serge

Upvotes: 5

Views: 836

Answers (1)

Luk&#225;š Lalinsk&#253;
Luk&#225;š Lalinsk&#253;

Reputation: 41316

eventFilter() is not a class method, so you need to pass self as well:

return QObject.eventFilter(self, obj, event)

Upvotes: 8

Related Questions