2010-02-16 77 views
4

我设置过滤器对我的QMainWindow本:PyQt。类型错误

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

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 

,我让每事件类型的QEvent \ QPaintEvent \ QHoverEvent \等无尽的错误:

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

我该如何摆脱它?

Thx提前,

塞尔

回答

6

eventFilter()是不是一个类的方法,所以你需要通过self还有:

return QObject.eventFilter(self, obj, event)