python无值返回

时间:2016-05-27 16:20:52

标签: python qt focus

class MyWindow():

    class Filter(QtCore.QObject) :

        def eventFilter(self, widget, event):                         
            return event.type() == QtCore.QEvent.FocusOut

    def __init__(self, ui) :
        self.ui = ui

    def mycode (self) :
        myvalue = float(self.ui.myvalueEdit.text()) 
        self._filter = self.Filter()    
        print (self.ui.myvalueEdit.installEventFilter(self._filter))

我试图拦截focusEvent,我想知道它会改变。在此代码中,我尝试读取eventFilter的返回值,但始终收到None值!

1 个答案:

答案 0 :(得分:1)

installEventFilter方法不返回任何内容,这就是为什么你得到None。您的eventFilter方法是一个在事件发生时将被调用的回调。

eventFilter的返回值是指示您是否已处理该事件。也就是说,如果您不希望任何其他对象处理相关事件,则返回True。这就是为什么你不能只返回True,它将消耗事件,你必须自己处理任何事件,你返回True。

class MyWindow(QtCore.QObject):

    def eventFilter(self, widget, event):                         
        if event.type() == QtCore.QEvent.FocusOut or event.type() == QtCore.QEvent.FocusIn:
            print("Focus Changed!")
            print("Value I want to save is: " + widget.toPlainText())
            # Put the code you want to do here!
            return True 
        return False 

    def __init__(self, ui) :
        self.ui = ui

    def mycode (self) :
        myvalue = float(self.ui.myvalueEdit.text())   
        self.ui.myvalueEdit.installEventFilter(self)