2010-02-16 6 views
4

Je mis filtre sur mon QMainWindow avec ceci:PyQt. TypeError

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

KeyPressFilter lui-même:

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 

et je reçois des erreurs sans fin avec tous les eventtype QEvent \ QPaintEvent \ QHoverEvent \ etc:

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

Comment puis-je m'en débarrasser?

Thx à l'avance,

Serge

Répondre

6

eventFilter() n'est pas une méthode de classe, de sorte que vous devez passer self ainsi:

return QObject.eventFilter(self, obj, event)